Php foreach使用值删除重复项

时间:2014-12-16 19:43:42

标签: php

我有一个像这样的数组

Array
(
    [0] => Array
        (
            [idvox_business] => 5
            [logo] => 1fJCb1_walmart_logo.jpg
            [name] => Walmart
            [icon] => http://maps.gstatic.com/mapfiles/place_api/icons/shopping-71.png
            [lat] => 32.931393
            [lng] => -96.840333
            [miles] => 1
            [place_id] => ChIJATuR8y0nTIYRQuI_GuSYqNs
        )

    [1] => Array
        (
            [idvox_business] => 41
            [logo] => tqkuHo_bestbuy.png
            [name] => Best Buy
            [icon] => http://maps.gstatic.com/mapfiles/place_api/icons/shopping-71.png
            [lat] => 32.9274
            [lng] => -96.837284
            [miles] => 1
            [place_id] => ChIJVVVVVSknTIYReq3C1jDTAeM
        )

    [2] => Array
        (
            [idvox_business] => 41
            [logo] => tqkuHo_bestbuy.png
            [name] => Best Buy
            [icon] => http://maps.gstatic.com/mapfiles/place_api/icons/shopping-71.png
            [lat] => 32.927357
            [lng] => -96.837275
            [miles] => 1
            [place_id] => ChIJs5gXoC0nTIYR-TFzaCpxVvE
        )

    [3] => Array
        (
            [idvox_business] => 16
            [logo] => C25fIa_macys_logo.jpg
            [name] => Macy's
            [icon] => http://maps.gstatic.com/mapfiles/place_api/icons/shopping-71.png
            [lat] => 32.92978
            [lng] => -96.81953
            [miles] => 2
            [place_id] => ChIJWb8Ag9sgTIYRiPwoJIqw2rc
        )

    [4] => Array
        (
            [idvox_business] => 41
            [logo] => tqkuHo_bestbuy.png
            [name] => Best Buy
            [icon] => http://maps.gstatic.com/mapfiles/place_api/icons/shopping-71.png
            [lat] => 32.956207
            [lng] => -96.815811
            [miles] => 3
            [place_id] => ChIJnVzmzT0hTIYRsWuHSl2p1Ig
        )

)

我想删除此数组中的重复项,但我只需省略最后一个唯一的数组输出需要这样

Array
(
    [0] => Array
        (
            [idvox_business] => 5
            [logo] => 1fJCb1_walmart_logo.jpg
            [name] => Walmart
            [icon] => http://maps.gstatic.com/mapfiles/place_api/icons/shopping-71.png
            [lat] => 32.931393
            [lng] => -96.840333
            [miles] => 1
            [place_id] => ChIJATuR8y0nTIYRQuI_GuSYqNs
        )

    [1] => Array
        (
            [idvox_business] => 41
            [logo] => tqkuHo_bestbuy.png
            [name] => Best Buy
            [icon] => http://maps.gstatic.com/mapfiles/place_api/icons/shopping-71.png
            [lat] => 32.9274
            [lng] => -96.837284
            [miles] => 1
            [place_id] => ChIJVVVVVSknTIYReq3C1jDTAeM
        )



    [3] => Array
        (
            [idvox_business] => 16
            [logo] => C25fIa_macys_logo.jpg
            [name] => Macy's
            [icon] => http://maps.gstatic.com/mapfiles/place_api/icons/shopping-71.png
            [lat] => 32.92978
            [lng] => -96.81953
            [miles] => 2
            [place_id] => ChIJWb8Ag9sgTIYRiPwoJIqw2rc
        )


)

1 个答案:

答案 0 :(得分:1)

由于子数组不相同,因此serialize解决方案不起作用。这假设基于相同的idvox_business

进行删除
$ids = array();

foreach($array as $key => $vals) {
    if(in_array($vals['idvox_business'], $ids)) {
        unset($array[$key]);
    } else {
        $ids[] = $vals['idvox_business'];
    }
}

或者可能:

foreach(array_column($array, 'idvox_business') as $key => $id) {
    $result[$key] = $array[$key];    
}