亲爱的stackoverflow成员, 我想随机加入2个数组,如下所述,我尝试了不同的方法,但我无法产生我想要的结果。
我有2个看起来像这样的数组。让我们称之为名称。
Array
(
[bill] => Array
(
)
[steve] => Array
(
)
[Ritchie] => Array
(
)
)
现在这些名称是从另一个函数生成的,它的输出看起来像这样。
Array
(
[1] => Array
(
[email] => info@bill.com
[name] => bill
[web] => http://bill.com
)
[2] => Array
(
[email] => rich@steve.com
[name] => steve
[web] => http://steve.com
)
[3] => Array
(
[email] => god@linux.com
[name] => Ritchie
[web] => http://linux.com
)
[4] => Array
(
[email] => dummy@dummy.com
[name] => Ritchie
[web] => http://linux.com
)
)
和第二个数组,我们称之为国家/地区。
Array
(
[0] => USA
[1] => UK
[2] => Netherlands
[3] => Australia
[4] => Germany
)
现在这是确切的问题。我想要连接第一个数组名称和第二个数组国家,并以随机顺序形成另一个关联数组。但请注意,返回名称数组的函数会返回键: Ritchie 两次,它有2次出现。所以最终的数组应该是这样的。
Array
(
[Ritchie] => Array
(
[0] => USA,
[1] => Germany
)
[bill] => Array
(
[0] => Netherlands
)
[steve] => Array
(
[0] => UK
)
)
由于键 Ritchie 有2次出现,因此应添加 country 数组中的2个唯一值。 名称中的键或次数以及国家/地区中的键将始终相同。如果他们有什么不清楚的地方,请告诉我,我会清除它。
我对互联网和stackoverflow做了大量研究,我只能想出这个。我现在的解决方案就是这个。请善意帮助我改进当前的代码行以满足我的需要,或者可能不是很优雅,如果有的话,请善意提出更好的解决方案。
$jumble = array();
foreach ($names as $name) {
$jumble[$name] = $countries[array_rand($countries)];
}
谢谢。
答案 0 :(得分:1)
试试这段代码:
shuffle($countries);
$n = count($countries); $i = 0;
$jumble = array();
foreach ($names as $name) {
if (!isset($jumble[$name])) $jumble[$name] = array();
$jumble[$name][] = $countries[$i++ % $n];
}