簡體   English   中英

獲取具有關鍵PHP值的數組集

[英]Get the array set which has a distinct value for key PHP

array(
        [0]=> array(3) 
            { 
                [0]=> array(3) 
                { 
                    ["name"]=> string(1) "a" ,
                    ["code"]=> string(3) "416" ,
                    ["id"]=> string(2) "a1" ,
                }, 
                [1]=> array(3)
                { 
                    ["name"]=> string(1) "a", 
                    ["code"]=> string(3) "522" ,
                    ["id"]=> string(2) "a2", 
                }, 
                [2]=> array(3) 
                { 
                    ["name"]=> string(1) "b" ,
                    ["code"]=> string(3) "580" ,
                    ["id"]=> string(2) "b1" ,
                }
            },
        [1]=> array(3) 
            { 
                [0]=> array(3) 
                { 
                    ["name"]=> string(1) "a" ,
                    ["code"]=> string(3) "416" ,
                    ["id"]=> string(2) "a1" ,
                }, 
                [1]=> array(3) 
                { 
                    ["name"]=> string(1) "a" ,
                    ["code"]=> string(3) "522" ,
                    ["id"]=> string(2) "a2" ,
                }, 
                [2]=> array(3) 
                { 
                    ["name"]=> string(1) "b" ,
                    ["code"]=> string(3) "899" ,
                    ["id"]=> string(2) "b2", 
                } 
            } 
    );

我有這樣的數組。 我需要的是每個數組(例如[0] => array()),我將在其中搜索數組,並僅對具有不同名稱值的數組集獲取array['code']

array [0]的示例:我將得到array[0][2]['code']因為此特定array[0][2]['code']的數組集具有唯一的“名稱”

假設以下代碼中的$array是示例中的$arr[0]

$array = array(
    array(
        "name" => "a",
        "code" => "416",
        "id" => "a1"
    ),
    array(
        "name" => "a",
        "code" => "522",
        "id" => "a2"
    ),
    array(
        "name" => "b",
        "code" => "580",
        "id" => "b1"
    )
);

$counts = array_count_values(
    array_map(function (array $entry) { return $entry['name']; }, $array)
    // or array_column($array, 'name') in PHP 5.5+
);

$uniqueNames = array_keys(
    array_filter($counts, function ($count) { return $count == 1; })
);

$result = array_filter($array, function (array $entry) use ($uniqueNames) {
    return in_array($entry['name'], $uniqueNames);
});

不一定是超級高效的方法,而是簡單有效的方法。 它將數組向下過濾到name僅存在一次的條目。 這可能符合或可能不符合您對“唯一”的定義,目前尚不清楚您輸入數據中可能有哪些變化。

暫無
暫無

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

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