閲覧数:815
投稿日:2020-04-23
更新日:2020-04-23
標準関数shuffle()を使用しただけでは、(並べ替えは行われるが、) 既存キーは削除されてしまう
コード
/* 連想配列を(キーと値の関係性を維持したまま)シャッフル */ function shuffleAssociativeU($ary) { if (!is_array($ary)) return $ary; $keyAry = array_keys($ary); shuffle($keyAry); $randomAry = array(); foreach ($keyAry as $val): $randomAry[$val] = $ary[$val]; endforeach; return $randomAry; } $dataAry = [ "東京" => "渋谷区", 0 => 100, "color" => "red"]; $dataAry2 = array("1" => "コロナの影響です。", "お昼" => "焼きそば", 5 , 5 => 89009, "ランダム" => "結果: " . rand(100,999), "PHP バージョン" => phpversion() ); var_export(shuffleAssociativeU($dataAry)); var_export(shuffleAssociativeU($dataAry2));
結果
array ( '東京' => '渋谷区', 0 => 100, 'color' => 'red', ) array ( 'ランダム' => '結果: 367', 5 => 89009, 1 => 'コロナの影響です。', 2 => 5, 'PHP バージョン' => '7.4.0', 'お昼' => '焼きそば', )