閲覧数:1084
投稿日: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', 'お昼' => '焼きそば', )