我正在编写一个使用风选算法获取指纹值的程序。这是我必须从数组中获取最小值的地方。不仅是最小的,而且在某些情况下,如果找到相同的值,则最右边的值将与索引值一起使用。示例数组(3,5,5,8,6,7)。从此示例中,我想获取第二个数字5的索引,即索引2,而不是索引1。
但是,当我尝试获得与最右边位置相同的值时,请使用php中的功能min(),但我得到的始终是最左边位置。
我希望输出
$a = array(3,5,5,8,6,7,6);
Run Code Online (Sandbox Code Playgroud)
是
[3,0], [5,2], [8,3], [6,6], [7,5]
Run Code Online (Sandbox Code Playgroud)
但实际输出是
[3,0], [5,1], [8,3], [6,4], [7,5]
Run Code Online (Sandbox Code Playgroud)
只是一个快速的选择,如果使用array_flip()交换值和密钥,则它将自动覆盖以前的任何密钥值,因此当您翻转时[1=>5, 2=>5],第二个将覆盖第一个。
所以
$a = array(3,5,5,8,6,7,6);
print_r(array_flip($a));
Run Code Online (Sandbox Code Playgroud)
给...
Array
(
[3] => 0
[5] => 2
[8] => 3
[6] => 6
[7] => 5
)
Run Code Online (Sandbox Code Playgroud)