[英]How to randomly loop through first layer of nested associative array in PHP?
我有一個嵌套的關聯數組,可能看起來像這樣:
$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()
來對結果鍵數組進行shuffle()
並對其進行迭代。
例:
$keys = array_keys($myarray);
shuffle($keys);
foreach ($keys as $key) {
var_dump($myarray[$key]);
}
根據我的測試,隨機播放只會隨機分配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);
?>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.