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”编号的重复项,我希望随机选择一个

我在PHP中有一个多维数组,其形式如下:

$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]);
    }
}