我有一个从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.
请注意,PHP
shuffle
不适合任何加密随机性。
PHPshuffle()
文档
PHParray_slice()
文档