首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除多维数组中的相同索引

删除多维数组中的相同索引
EN

Stack Overflow用户
提问于 2012-10-20 11:47:12
回答 4查看 327关注 0票数 0

我有如下的多维数组。

代码语言:javascript
复制
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'));

因此,我想删除一个具有相同值的数组,它应该如下所示。

代码语言:javascript
复制
array(
    0 => array(
            'id' => '6',
            'name' => 'Looper',
            'language' => 'hindi'), 
    1 => array(
            'id' => '7',
            'name' => 'Rush',
            'language' => 'hindi'));

请帮我找出解决方案。

EN

回答 4

Stack Overflow用户

发布于 2012-10-20 11:50:47

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

票数 2
EN

Stack Overflow用户

发布于 2012-10-20 11:48:28

好的,也许你可以尝试使用unset(array2),这将从数组http://php.net/manual/en/function.unset.php中删除一个元素

票数 0
EN

Stack Overflow用户

发布于 2012-10-20 11:55:50

传递给保存密钥的变量,使用in_array进行检查

代码语言:javascript
复制
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;
}

将函数调用为

代码语言:javascript
复制
print_r(assc_array_filter($arr, 'id'));

-更新了:使用array_search的交换机

上面的代码将返回数组中的第一个数组,而不是数组中找到的“第二个集合”,因此..添加了一个参数,以允许它更新找到的“第一个集合”。

代码语言:javascript
复制
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;
}

调用方式

代码语言:javascript
复制
print_r(assc_array_filter($arr, 'id', true));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12985094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档