我有一个嵌套的关联数组,它看起来像这样:
$myarray = array(
['tiger'] => array(
['people'], ['apes'], ['birds']
),
['eagle'] => array(
['rodents'] => array(['mice'], ['squirrel'])
),
['shark'] => ['seals']
);
我如何以随机顺序循环第一层(老虎,鹰,鲨鱼)并确保我在循环中覆盖所有它们?我在看PHP函数shuffle();,但是我认为这个函数打乱了所有的层,打乱了整个数组。
您可以像这样对数组随机排序,它将保留键和值
<?php
$myarray = array(
'tiger' => array(
'people', 'apes', 'birds'
),
'eagle' => array(
'rodents' => array('mice', 'squirrel')
),
'shark' => 'seals'
);
$shuffleKeys = array_keys($myarray);
shuffle($shuffleKeys);
$newArray = array();
foreach($shuffleKeys as $key) {
$newArray[$key] = $myarray[$key];
}
print_r($newArray);
您可以使用array_keys()
获取密钥。然后可以使用shuffle()
对结果键数组进行洗牌,并对其进行迭代。
的例子:
$keys = array_keys($myarray);
shuffle($keys);
foreach ($keys as $key) {
var_dump($myarray[$key]);
}
根据我的测试,shuffle只随机化1层。你自己试试吧:
<?php
$test = array(
array(1,2,3,4,5),
array('a','b','c','d','e'),
array('one','two','three','four','five')
);
shuffle($test);
var_dump($test);
?>