了解PHP中的二维数组搜索问题

问题描述 投票:1回答:1

这里是带有某些值的简单2d数组

$array[0][0] = 1;
$array[0][1] = 2;
$array[1][0] = 3;
$array[1][1] = 4;

我想找到具有最大值的数组元素的键。

这是返回密钥的代码:

$index = array_search(max($array), $array);

效果很好,但仅返回密钥的“最后”部分。因此,在我的数组中,具有最大值(4)的元素是$ array [1] [1],因此$ index返回1,我知道这是该元素的键,但是我怎么知道这是否是元素[0] [ 1]或[1] [1],因为这两个元素都有键[1]?我如何获得“完成”键([1] [1]),所以我的情况是[1]和[1]。

我想我在多维PHP数组这样的工作方式中缺少一些东西,希望有人能帮助我理解它们。

php arrays multidimensional-array
1个回答
0
投票

[示例数据中有8个索引,其中一半是1,因此获得1并不能证明任何事情都在起作用。

让我们分割您的代码:

max($array)

由于$array是二维数组,因此请遵循rules apply

  1. 具有多个不同长度的数组,max返回最长的一个

    $val = max(array(2, 2, 2), array(1, 1, 1, 1)); // array(1, 1, 1, 1)
    
  2. 从左到右比较相同长度的多个数组

    $val = max(array(2, 4, 8), array(2, 5, 1)); // array(2, 5, 1)
    

因此您得到[3, 4],因为1小于3。请比较:

$array[0][0] = 1;
$array[0][1] = 9999999;
$array[1][0] = 3;
$array[1][1] = 4;
print_r(max($array));
Array
(
    [0] => 3
    [1] => 4
)
$array[0][0] = 1;
$array[0][1] = 2;
$array[1][0] = 0;
$array[1][1] = 9999999;
print_r(max($array));
Array
(
    [0] => 1
    [1] => 2
)

因此,您选择的子数组遵循的规则不一定符合您的规范。由于您的示例数据,您的代码纯属偶然。

© www.soinside.com 2019 - 2024. All rights reserved.