簡體   English   中英

如何隨機遍歷PHP中嵌套關聯數組的第一層?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM