If you have an indexed array of objects, and you want to remove duplicates by comparing a specific property in each object, a function like the remove_duplicate_models() one below can be used.
<?php | |
class Car { | |
private $model; | |
public function __construct( $model ) { | |
$this->model = $model; | |
} | |
public function get_model() { | |
return $this->model; | |
} | |
} | |
$cars = [ | |
new Car('Mustang'), | |
new Car('F-150'), | |
new Car('Mustang'), | |
new Car('Taurus'), | |
]; | |
function remove_duplicate_models( $cars ) { | |
$models = array_map( function( $car ) { | |
return $car->get_model(); | |
}, $cars ); | |
$unique_models = array_unique( $models ); | |
return array_values( array_intersect_key( $cars, $unique_models ) ); | |
} | |
print_r( remove_duplicate_models( $cars ) ); |
This comment has been minimized.
This comment has been minimized.
@amrography Glad to hear it :) Yes, I would leave in the |
This comment has been minimized.
This comment has been minimized.
@kellenmace |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This comment has been minimized.
Saved my day!
Is it necessary to use
array_values
function on line 29 on php 7+ ?