0

I have an array like this

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
        )

)

I want to remove duplicates from this array but i need to omit only last unique array output need like this

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
        )


)
Cœur
  • 37,241
  • 25
  • 195
  • 267
spsaravananct
  • 392
  • 2
  • 4
  • 17
  • Using [array_filter](http://www.php.net/array_filter) would likely be a better option than the answer that @OIS is pointing to. You write a function to compare two entries and return true if you want the value to stay in the array (in your case different) and false if one is to be removed (same). – Jonathan Kuhn Dec 16 '14 at 19:51
  • @JonathanKuhn ah, so they are not duplicates? Maybe he should ask the right question... – OIS Dec 16 '14 at 19:54
  • Actually I was wrong, I was combining array_filter and the usort function in my head where you use a comparison. array_filter only gets one argument, not two to compare. Tired today. – Jonathan Kuhn Dec 16 '14 at 19:57
  • I do not see a correct answer in the duplicate. – AbraCadaver Dec 16 '14 at 19:58

1 Answers1

1

Since the sub-arrays are not identical then the serialize solution will not work. This assumes removing based on identical idvox_business:

$ids = array();

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

Or possibly:

foreach(array_column($array, 'idvox_business') as $key => $id) {
    $result[$key] = $array[$key];    
}
AbraCadaver
  • 78,200
  • 7
  • 66
  • 87