如何使用php从具有相同值的数组中获取最右侧的索引值

I'm making a program to take fingerprint values using a winnowing algorithm. which is where I have to take the smallest value from an array. but not only the smallest, there are conditions where if you find the same value, the rightmost value will be taken along with the index value. example array (3,5,5,8,6,7). from this example, I want to take the index of the second number 5, which is index 2, not index 1.

but when I try to get the same value as the rightmost position use the function min () in php, but the one I get is always the leftmost position.

I expect the output of

$a = array(3,5,5,8,6,7,6);

be

[3,0], [5,2], [8,3], [6,6], [7,5]

but the actual output is

[3,0], [5,1], [8,3], [6,4], [7,5]

Use the value from an array as an index to filter out the most right value

$values = array(3,5,5,8,6,7,6);

$result = [];
foreach ($values as $index => $value) {
  $result[$value] = [$value, $index];
}
print_r(array_values($result));

Just a quick alternative, if you use array_flip() which swaps the value and key over, then this will automatically overwrite any previous key value, so when you flip [1=>5, 2=>5] then the second one will overwrite the first.

So

$a = array(3,5,5,8,6,7,6);
print_r(array_flip($a));

gives...

Array
(
    [3] => 0
    [5] => 2
    [8] => 3
    [6] => 6
    [7] => 5
)

Use array_unique to solve this problem

$a = array(3,5,5,8,6,7,6);
$unique = array_unique($a);
print_r($unique);

answer should be

Array
(
    [0] => 3
    [1] => 5
    [3] => 8
    [4] => 6
    [5] => 7
)