首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用php同样的方法使两个数组随机

用php同样的方法使两个数组随机
EN

Stack Overflow用户
提问于 2012-02-01 19:17:18
回答 2查看 136关注 0票数 1

我是stackoverflow的新手,所以如果这个问题很愚蠢,请随意删除它:

这样做的主要目的是在每次刷新时在页面上随机显示详细信息列表,但详细信息在不同的数组中,所以我有两个数组,我必须以相同的方式随机化。

示例:

代码语言:javascript
运行
复制
 $Name[0]=John;
 $Name[1]=Lucy;
 $Name[2]=Mike;

 $Age[0]=18;
 $Age[1]=20;
 $Age[2]=25;

随机化后变成:

代码语言:javascript
运行
复制
 $Name[2]=Mike;
 $Name[0]=John;
 $Name[1]=Lucy;

 $Age[2]=25;
 $Age[0]=18;
 $Age[1]=20;

我尝试使用"->",例如:

代码语言:javascript
运行
复制
 $Array[0]->name = 'John';
 $Array[0]->age = '18';

 $Array[1]->name = 'Lucy';
 $Array[1]->age = '20';

 shuffle($Array);

但我的老师并不兴奋,因为代码很混乱,因为有很多传输(在随机化之前将细节转移到新数组中,以及在随机化之后将新数组重新转移到细节中)。他想让我只用这两个数组。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-01 19:25:05

你所做的,是一种正确的做事方式。这样看吧。你到底想要达到什么目的?你想要一组随机排序的数据(好吧,排序在这里不是正确的词,但你得到了它)。每当您谈到数据的任何类型的重新排序时,我们谈论的都是更改元素出现的顺序。这里的元素既不是'name',也不是'age‘。这里的元素是'person‘。因此,您的数据列表应该是“person”的列表,您可以对其进行重新排序,而不是放在两个松散耦合的数组中。

不管怎样,如果你一定要这样做的话。这就是我的建议。

假设有两个数组$A$B。让它们都有N元素。您要做的是,创建一个数组$nums,其中包含从0N-1的元素。

代码语言:javascript
运行
复制
$nums = array(0, 1, 2 ... N-1)

现在,对$sums数组进行混洗。所以,假设我们有这样的东西:

代码语言:javascript
运行
复制
$num = (3, 4, 1, 2)

好的,我们在这里创建了一个映射,

$num =3

表示第0个元素是3,您可以将其解释为in the new array, the 0th element should be the 3rd element of the old array。为此,运行一个简单的循环:

代码语言:javascript
运行
复制
for($i=0; $i<N; $i++) {
    $A2[$i] = $A[$num[$i]];
    $B2[$i] = $B[$num[$i]];
}

如果您坚持认为这是一个在线解决方案(一个修改原始数据结构而不是构建新的数据结构的解决方案),那么这将是一个略微具有挑战性的任务,但我将把这个问题留给您(考虑根据我们刚刚创建的地图交换数据元素)。此外,您可以轻松地将其扩展到2个以上的数组,或者是一个数组的数组,以防您不确定需要处理多少个数组。如果你有任何问题,请随时提出来...

票数 3
EN

Stack Overflow用户

发布于 2012-02-01 19:21:36

您应该使用关联数组。

代码语言:javascript
运行
复制
$people = array('John' => 18, 'Lucy' => 20, 'Mike' => 25);
return shuffle_assoc($people);

function shuffle_assoc( $array )
{
   $keys = array_keys( $array );
   shuffle( $keys );
   return array_merge( array_flip( $keys ) , $array );
} 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9094871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档