Well, I need to be able to eliminate the repeated elements but keeping the last element, that is, eliminate the previous ones and leave the last one.
This is what I have
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"} ]
I have to delete the previous ones.
0: {intervention_id: 2, exists: "yes"} 1: {intervention_id: 2, exists: "no"}
and leave this
2: {intervention_id: 2, exists: "yes"}
And this is what I need
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"} ]
I need to keep the last one and delete the previous ones
Try this but delete the last one not the previous ones.
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; }
Answer
You could simply override the value of the current element using the same key. In this case, you will always get the last element for each 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);
Output:
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 ) )