Php 如果键值存在,则在多维数组中随机取消设置元素
我在PHP中有一个多维数组,其形式如下:Php 如果键值存在,则在多维数组中随机取消设置元素,php,arrays,Php,Arrays,我在PHP中有一个多维数组,其形式如下: $data = array( array('spot'=>1,'name'=>'item_1'), array('spot'=>2,'name'=>'item_2'), array('spot'=>1,'name'=>'item_3'), ); 如果多个数组元素包含“spot”编号的重复项,我希望随机选择一个
$data = array(
array('spot'=>1,'name'=>'item_1'),
array('spot'=>2,'name'=>'item_2'),
array('spot'=>1,'name'=>'item_3'),
);
如果多个数组元素包含“spot”编号的重复项,我希望随机选择一个,并使用相同的“spot”值取消设置所有其他元素。执行此操作的最有效方式是什么?生成的数组如下所示:
$data = array(
array('spot'=>2,'name'=>'item_2'),
array('spot'=>1,'name'=>'item_3'),
);
将
spot
的值存储在另一个数组中。使用array\u count\u value
检查哪些值出现多次。找到这些值的键。选择一个随机键。从原始数组中删除除选定关键点以外的所有关键点。代码如下:
$data = array(
array('spot'=>1,'name'=>'item_1'),
array('spot'=>2,'name'=>'item_2'),
array('spot'=>1,'name'=>'item_3'),
);
$arr = array();
foreach($data as $val){
$arr[] = $val['spot'];
}
foreach(array_count_values($arr) as $x => $y){
if($y == 1) continue;
$keys = array_keys($arr, $x);
$rand = $keys[array_rand($keys)];
foreach($keys as $key){
if($key == $rand) continue;
unset($data[$key]);
}
}