
配列のキーをシャッフルする †uksort()を使用します.通常評価関数でまじめに評価した結果を返し,ソートしますが,ランダムな値を返すことでシャッフルできます. ワンライナーで書いてみる
$ php -r '
$foo = array(
0=>"a", 1=>"b", 2=>"c", "d"=>3, "e"=>4,
"05"=>"f", "06"=>"g", "h"=>"07", "i"=>"08"
);
var_dump($foo);
function foo_sort( $a, $b) {
return mt_rand( -1, 1);
}
uksort( $foo, "foo_sort");
var_dump( $foo);'
array(9) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[2]=>
string(1) "c"
["d"]=>
int(3)
["e"]=>
int(4)
["05"]=>
string(1) "f"
["06"]=>
string(1) "g"
["h"]=>
string(2) "07"
["i"]=>
string(2) "08"
}
array(9) {
["i"]=>
string(2) "08"
["d"]=>
int(3)
["06"]=>
string(1) "g"
["05"]=>
string(1) "f"
["e"]=>
int(4)
[1]=>
string(1) "b"
["h"]=>
string(2) "07"
[2]=>
string(1) "c"
[0]=>
string(1) "a"
}
処理部分
function array_keys_shuffle_sort( $a, $b) {
return mt_rand( -1, 1);
}
uksort( $foo, "array_keys_shuffle_sort");
haltさん元ネタサンクス |