如何在php中的关联数组中选择随机值



我有一个从mysql数据库中得到的数据(关联数组(,看起来像这个

$data=[
["id"=>"1", "words"=>"words 1"],
["id"=>"2", "words"=>"words 2"],
["id"=>"3", "words"=>"words 3"],
["id"=>"4", "words"=>"words 4"],
["id"=>"5", "words"=>"words 5"],
["id"=>"6", "words"=>"words 6"],
["id"=>"7", "words"=>"words 7"],
["id"=>"8", "words"=>"words 8"],
["id"=>"9", "words"=>"words 9"],
["id"=>"10", "words"=>"words 10"]
];

现在我想从这个数组($data(中形成一个只包含3个随机数组的新数组,但我做不到,我使用的函数不起作用

下面是我的代码

$count="3";
$rand = array_intersect_key($array, array_flip(array_rand($array, $count)))

我希望新阵列看起来像这个

$new_data=[
["id"=>"1", "words"=>"words 1"],
["id"=>"2", "words"=>"words 2"],
["id"=>"3", "words"=>"words 3"]
];

其中阵列是随机选择的,而不仅仅是CCD_。

请问我如何才能做到这一点,我在做什么是错误的

实际上您的源数据完全按照您的请求工作——您是否刚刚在$data数组中输入了一个错误,$rand中的引用值是$array,而它应该是$data


尝试使用数组shuffle,然后将数组切片为只有X个数字长。请注意,使用此方法时,原始外部数组键(数字(将不会保留,而使用原始工作版本时,它们将保留。

$count = 3; // how many array rows do you want to keep?
$newData = $data; // source array.
shuffle($newData);  // reorder the array. 
$newData = array_slice($newData,0,$count); // cut off after $count elements.

请注意,PHPshuffle不适合任何加密随机性。

PHPshuffle()文档

PHParray_slice()文档

最新更新