配列からランダムで要素を抽出する

覚え書。

Perl版。

my @array = (0,1,2,3,4,5);
my $value = splice @array, int rand @array , 1;

PHP版。

<?php

$array = array(0,1,2,3,4,5);
$value = array_shift(array_splice($array,array_rand($array),1));

PHPのことだから一発で抽出できる関数あるもんだと思ってたけど無かったっぽい。

肝心なとこで関数無いんだよないつも・・・。


追記

ちょっと言葉足らずだったので補足。

配列からランダムで要素を”取得”したいわけではなく、”抽出”したいわけです。

つまり上記のソースを実行すると、

@array = (0,1,2,4,5);
$value = 3;

みたいな感じで元配列から抜き取るような結果になって欲しいと。

List::Util::shuffle使ってshiftしてもいいんですが、そうすると元配列の順序までバラバラになってしまうのでNG。