Bueno, necesito poder eliminar los elementos repetidos pero manteniendo el último elemento, es decir, eliminar los anteriores y dejar el último.
Esto es lo que tengo
exists: [ 0: {intervention_id: 2, exists: "yes"} 1: {intervention_id: 2, exists: "no"} 2: {intervention_id: 2, exists: "yes"} 3: {intervention_id: 5, exists: "yes"} 4: {intervention_id: 6, exists: "no"} 5: {intervention_id: 12, exists: "yes"} ]Tengo que borrar los anteriores.
0: {intervention_id: 2, exists: "yes"} 1: {intervention_id: 2, exists: "no"}y deja esto
2: {intervention_id: 2, exists: "yes"}Y esto es lo que necesito
exists: [ 0: {intervention_id: 2, exists: "yes"} 1: {intervention_id: 5, exists: "yes"} 2: {intervention_id: 6, exists: "no"} 3: {intervention_id: 12, exists: "yes"} ]Necesito mantener el último y eliminar los anteriores.
Intente esto pero elimine el último, no los anteriores.
function unique_multidim_array($array, $key) { $temp_array = array(); $i = 0; $key_array = array(); foreach($array as $val) { if (!in_array($val[$key], $key_array)) { $key_array[$i] = $val[$key]; $temp_array[$i] = $val; } $i++; } return $temp_array; }$data = [ [ 'intervention_id' => 2, 'exists' => 'yes' ], [ 'intervention_id' => 2, 'exists' => 'no' ], [ 'intervention_id' => 2, 'exists' => 'yes' ], [ 'intervention_id' => 5, 'exists' => 'yes' ], [ 'intervention_id' => 6, 'exists' => 'no' ], [ 'intervention_id' => 12, 'exists' => 'yes' ] ]; $map = array_column($data, 'exists', 'intervention_id'); array_walk($map, function (&$value, $key) { $value = [ 'intervention_id' => $key, 'exists' => $value ]; }, ARRAY_FILTER_USE_BOTH); $result = array_values($map); print_r($result);Simplemente podría anular el valor del elemento actual usando la misma clave. En este caso, siempre obtendrá el último elemento para cada ID
function unique_multidim_array($array, $key) { $uniq = []; foreach($array as $val) { $curVal = $val[$key]; // shortcut of the value $uniq[$curVal] = $val; // override previous value if exists } return array_values($uniq); // array_values to re-index array } $exists = [ ['intervention_id' => 2, 'exists' => 'yes'], ['intervention_id' => 2, 'exists' => 'no'], ['intervention_id' => 2, 'exists' => 'yes'], ['intervention_id' => 5, 'exists' => 'yes'], ['intervention_id' => 6, 'exists' => 'no'], ['intervention_id' => 12, 'exists' => 'yes'], ]; $uniq = unique_multidim_array($exists, 'intervention_id'); print_r($uniq);Producción:
Array( [0] => Array( [intervention_id] => 2 [exists] => yes ) [1] => Array( [intervention_id] => 5 [exists] => yes ) [2] => Array( [intervention_id] => 6 [exists] => no ) [3] => Array( [intervention_id] => 12 [exists] => yes ) )