首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 打亂多維陣列順序:遞迴 shuffle 實作

     編輯:PHP 綜合知識

shuffle() 僅支援一維陣列,多維陣列需遞迴處理保持鍵名關聯。

針對二維關聯陣列

function shuffle_assoc($list){
    if(!is_array($list)) return $list;
    $keys = array_keys($list);
    shuffle($keys);
    $random = array();
    foreach($keys as $key) $random[$key] = $list[$key];
    return $random;
}

遞迴版本(支援任意深度)

function shuffle_assoc($list){
    if(!is_array($list)) return $list;
    $keys = array_keys($list);
    shuffle($keys);
    $random = array();
    foreach($keys as $key) $random[$key] = shuffle_assoc($list[$key]);
    return $random;
}

另一種寫法(手冊範例)

function rec_assoc_shuffle($array){
    $ary_keys = array_keys($array);
    $ary_values = array_values($array);
    shuffle($ary_values);
    foreach($ary_keys as $key => $value){
        if(is_array($ary_values[$key]) && $ary_values[$key] !== NULL)
            $ary_values[$key] = rec_assoc_shuffle($ary_values[$key]);
        $new[$value] = $ary_values[$key];
    }
    return $new;
}

說明

  • 皆保留原鍵名,僅打亂順序。
  • 遞迴版本會同時打亂所有層級的鍵順序。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved