簡體   English   中英

刪除多維數組中的相同索引

[英]Remove same indexes in multidimensional array

我有多維數組如下。

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

請幫我解決問題。

可以使用array_unique()從php中的單個多維數組中刪除重復條目

好吧,也許你可以嘗試使用unset(array [2]),這會從數組中刪除一個元素http://php.net/manual/en/function.unset.php

傳遞給變量來保存鍵,使用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));
$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()不適用於多維數組。”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM