我正在制作一个使用风选算法获取指纹值的程序。这是我必须从数组中取最小值的地方。但不仅是最小的,在某些情况下,如果您找到相同的值,则最右边的值将与索引值一起使用。示例数组 (3,5,5,8,6,7)。从这个例子中,我想取第二个数字 5 的索引,它是索引 2,而不是索引 1。但是当我尝试获得与最右边位置相同的值时,请使用 php 中的函数 min(),但我得到的始终是最左边的位置。我希望输出$a = array(3,5,5,8,6,7,6);是[3,0], [5,2], [8,3], [6,6], [7,5]但实际输出是[3,0], [5,1], [8,3], [6,4], [7,5]
3 回答
蓝山帝景
TA贡献1843条经验 获得超7个赞
只是一个快速的替代方案,如果您使用array_flip()which 交换值和键,那么这将自动覆盖任何以前的键值,因此当您翻转时[1=>5, 2=>5],第二个将覆盖第一个。
所以
$a = array(3,5,5,8,6,7,6);
print_r(array_flip($a));
给...
Array
(
[3] => 0
[5] => 2
[8] => 3
[6] => 6
[7] => 5
)
哔哔one
TA贡献1854条经验 获得超8个赞
使用数组中的值作为索引,筛选出最合适的值
$values = array(3,5,5,8,6,7,6);
$result = [];
foreach ($values as $index => $value) {
$result[$value] = [$value, $index];
}
print_r(array_values($result));
炎炎设计
TA贡献1808条经验 获得超4个赞
使用 array_unique 解决这个问题
$a = array(3,5,5,8,6,7,6);
$unique = array_unique($a);
print_r($unique);
答案应该是
Array
(
[0] => 3
[1] => 5
[3] => 8
[4] => 6
[5] => 7
)
- 3 回答
- 0 关注
- 163 浏览
添加回答
举报
0/150
提交
取消