100 個の要素の配列から 50 個の一意の要素をすばやくランダムに削除するにはどうすればよいですか?
array_rand($a, 50);
次に、配列の重複を排除して、ランダムフェッチを呼び出します
次に、配列の重複を排除して、ランダムフェッチを呼び出します
1階の正解はマニュアルを確認してください、array_rand
1階の正解はマニュアルを確認してください、array_rand
array_randはどのように実装されていますか? 次のように実装することもできます。
$num =0;$array = array(1,2,3,4,5,6,7,8,9);$arr =array();$g = 5;$tag = true;while($tag){ $count = count($array); $t = rand(0,1); if($t==1){ $arr[] = $array[$num]; unset($array[$num]); } $num++; if(count($arr)==$g){ $tag=false; } if($num == $count){ $num = 0; }}
空の配列を作成し、array_rand がランダムに 1 つを取り出して配列に追加し、2 番目の配列を取り出して、取り出したものが既に配列にあるかどうかの判断を開始します。 50 項目保存してループを終了します
function swap(&$a, &$b){ $temp = $b; $b = $a; $a = $temp;}$result = array();$src = array();for($i = 0 ; $i < 40 ; $i++){ $src[] = $i + 1;}$arr_len = count($src);$count = 20;$index = 0;while($index < $count){ $random = rand(0, $arr_len - $index - 1); $result[] = $src[$random]; swap($src[$random] , $src[$arr_len - $index - 1]); $index += 1;}print_r(json_encode($result));print_r(json_encode($src));
#1 言ったじゃないですか? 考えられる結果
3,5,6,7,10,12,13,15,16,19,20,23,30,31,33,35,37,38,39,44,46,49, 51 ,53,54,59,61,63,64,65,66,69,71,72,74,75,77,78,80,82,83,87,88,89,91,92,96,97 ,98,100
$arr = array(1,2,3,3,4,56,fdas,....);
$unique = array_unique($arr)
print_r(array_rand($unique,50 ); );
mixed array_rand ( array input [, int num_req] )
array_rand() は、配列から 1 つ以上のランダムなセルを取り出したい場合に非常に便利です。入力を入力配列として受け入れ、オプションのパラメーター num_req を使用して、削除するセルの数を指定します。指定しない場合、デフォルトは 1 です。
1 つだけを取り出す場合、array_rand() はランダムなユニットのキー名を返し、それ以外の場合はランダムなキー名を含む配列を返します。このようにして、配列からキーと値をランダムに取り出すことができます。
1. まず、array_unique を使用して一意の要素を取得します。
2. シャッフルを使用して順序を乱します
3. array_slice を使用して 50 個の要素を取得します。
例:
rree