0

我有如下多维数组。

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'));

请帮助我获得解决方案。

4

4 回答 4

2

array_unique()用于从 php 中的单个多维数组中删除重复条目

于 2012-10-20T03:50:46.927 回答
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));
于 2012-10-20T03:55:50.103 回答
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() 不适用于多维数组。”

于 2012-10-20T03:56:02.577 回答
0

好的,也许您可​​以尝试使用 unset(array[2]),这会从数组中删除一个元素http://php.net/manual/en/function.unset.php

于 2012-10-20T03:48:27.933 回答