我有多维数组如下。
array(
0 => array(
'id' => '6',
'name' => 'Looper',
'language' => 'hindi'),
1 => array(
'id' => '7',
'name' => 'Rush',
'language' => 'hindi'),
2 => array(
'id' => '6',
'name' => 'Looper',
'language' => 'hindi'));
所以我想删除一个具有相同值的数组,它应该如下所示。
array(
0 => array(
'id' => '6',
'name' => 'Looper',
'language' => 'hindi'),
1 => array(
'id' => '7',
'name' => 'Rush',
'language' => 'hindi'));
请帮我解决问题。
答案 0 :(得分:2)
可以使用array_unique()
从php中的单个多维数组中删除重复条目
答案 1 :(得分:0)
好吧,也许你可以尝试使用unset(array [2]),这会从数组中删除一个元素http://php.net/manual/en/function.unset.php
答案 2 :(得分:0)
传递给变量来按住键,使用in_array
function assc_array_filter($array, $id)
{
$keys = array();
foreach($array as $index => $arr)
{
if(in_array($arr[$id], $keys))
{
unset($array[$index]);
}
else
{
$keys[] = $arr[$id];
}
}
return $array;
}
调用函数
print_r(assc_array_filter($arr, 'id'));
---- 更新:使用array_search
上面的代码将返回数组中的第一个,而不是数组中的“第二组”,所以.. 添加了一个参数,以允许它更新找到的“第一组”..
function assc_array_filter($array, $id, $last_updated = false, $strict = false)
{
$keys = array();
foreach($array as $index => $arr)
{
if(($in_index = array_search($arr[$id], $keys, $strict)) !== false )
{
if($last_updated)
{
$array[$in_index] = $arr;
}
unset($array[$index]);
}
else
{
$keys[] = $arr[$id];
}
}
return $array;
}
呼叫
print_r(assc_array_filter($arr, 'id', true));
答案 3 :(得分:0)
$oldarr = array(
0 => array(
'id' => '6',
'name' => 'Looper',
'language' => 'hindi'),
1 => array(
'id' => '7',
'name' => 'Rush',
'language' => 'hindi'),
2 => array(
'id' => '6',
'name' => 'Looper',
'language' => 'hindi'));
$newarr = array();
foreach( $oldarr as $v ) if( !in_array( $v, $newarr ) ) $newarr[] = $v;
print_r( $newarr );
这将解决您的问题..从PHP 4.2开始,in_array()将数组作为第一个参数。 array_unique()不适用于此解决方案..来自php.net:“注意:请注意,array_unique()不适用于多维数组。”