I need to get the keys from values that are duplicates. I tried to use array_search and that worked fine, BUT I only got the first value as a hit.
I need to get both keys from the duplicate values, in this case 0 and 2. The search result output as an array would be good.
Is there a PHP function to do this or do I need to write some multiple loops to do it?
$list[0][0] = "2009-09-09"; $list[0][1] = "2009-05-05"; $list[0][2] = "2009-09-09"; $list[1][0] = "first-paid"; $list[1][1] = "1"; $list[1][2] = "last-unpaid"; echo array_search("2009-09-09",$list[0]);
Advertisement
Answer
You want array_keys with the search value
array_keys($list[0], "2009-09-09");
which will return an array of the keys with the specified value, in your case [0, 2]. If you want to find the duplicates as well, you can first make a pass with array_unique, then iterate over that array using array_keys on the original; anything which returns an array of length > 1 is a duplicate, and the result is the keys in which the duplicates are stored. Something like…
$uniqueKeys = array_unique($list[0]) foreach ($uniqueKeys as $uniqueKey) { $v = array_keys($list[0], $uniqueKey); if (count($v) > 1) { foreach ($v as $key) { // Work with $list[0][$key] } } }