filtrar los valores de matriz de php y eliminar duplicados de matriz multidimensional

Hola a todos, estoy intentando encontrar valores x duplicados de esta matriz y eliminarlos y dejar solo los únicos. Por ejemplo mi matriz es

Array ( [0] => Array ( [x] => 0.5 [y] => 23 ) [1] => Array ( [x] => 23 [y] => 21.75 ) [2] => Array ( [x] => 14.25 [y] => 21.875 ) [3] => Array ( [x] => 19.375 [y] => 21.75 ) [4] => Array ( [x] => 9.125 [y] => 21.875 ) [5] => Array ( [x] => 23 [y] => 19.625 ) [6] => Array ( [x] => 19.375 [y] => 19.625 ) ) 

Entonces, lo que necesito que suceda es que los bucles atraviesen todo el asunto y vean el primer valor de x como .5, luego continúe y lo que sea que tenga x como .5 lo elimine de la matriz para que al final tenga una matriz como esta

  Array ( [0] => Array ( [x] => 0.5 [y] => 23 ) [1] => Array ( [x] => 23 [y] => 21.75 ) [2] => Array ( [x] => 14.25 [y] => 21.875 ) [3] => Array ( [x] => 19.375 [y] => 21.75 ) [4] => Array ( [x] => 9.125 [y] => 21.875 ) ) 

Donde todos los valores de X son únicos. Busqué en línea y encontré esta función para usar, pero esto no parece funcionar:

  $result = array_map("unserialize", array_unique(array_map("serialize", $array))); 

Simplemente recorre y encuentra valores únicos a medida que avanzas:

 $taken = array(); foreach($items as $key => $item) { if(!in_array($item['x'], $taken)) { $taken[] = $item['x']; } else { unset($items[$key]); } } 

Cada vez que se usa el valor x , lo guardamos, y los usos subsiguientes se unset de la matriz.

array_unique compara valores de cadena, por lo que puede crear objetos (con una función sobrecargada __toString ) como un paso intermedio.

 class XKeyObj { public $x; public $y; public function XKeyObj($x, $y) { $this->x = $x; $this->y = $y; } public function __toString() { return strval($this->x); } } function array_to_xKey($arr) { return new XKeyObj($arr['x'], $arr['y']); } function xKey_to_array($obj) { return array('x' => $obj->x, 'y' => $obj->y); } $input = array( array('x' => 0.5, 'y' => 23), array('x' => 23, 'y' => 21.75), array('x' => 14.25, 'y' => 21.875), array('x' => 19.375, 'y' => 21.75), array('x' => 9.125, 'y' => 21.875), array('x' => 23, 'y' => 19.625), array('x' => 19.375, 'y' => 19.625) ); $output = array_map('xKey_to_array', array_unique(array_map('array_to_xKey', $input))); print_r($output); 

El resultado:

 Array ( [0] => Array ( [x] => 0.5 [y] => 23 ) [1] => Array ( [x] => 23 [y] => 21.75 ) [2] => Array ( [x] => 14.25 [y] => 21.875 ) [3] => Array ( [x] => 19.375 [y] => 21.75 ) [4] => Array ( [x] => 9.125 [y] => 21.875 ) ) 
 array_unique(my_array, SORT_REGULAR) 
    Intereting Posts