【发布时间】:2020-08-01 23:37:08
【问题描述】:
这是一个带有一些值的简单二维数组
$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 数组的工作方式中遗漏了一些东西,我希望有人能帮助我理解它们。
更新 #2
现在我对 max() 更加困惑了。我试过了
$array[0][0] = 5323;
$array[0][1] = 5346;
$array[0][2] = 5424;
$array[1][0] = 6000;
$array[1][1] = 5412;
$array[1][2] = 5543;
$array[2][0] = 5651;
$array[2][1] = 7000;
$array[2][2] = 5254;
var_dump(max($array));
它返回 subbaray,它没有 7000 作为我预期的结果之一。毕竟这是这个数组中的最大值,所以现在我完全糊涂了。
【问题讨论】:
-
如果说 $array[0][1] = 7;,你仍然会在 max($array) 中得到 [3,4]。我希望您了解 max with arrays 是如何工作的。 array_search 返回 max() 选择的子数组的索引
-
不,我不明白在那个例子中我怎么能得到 [3,4] 作为 max 的结果。当我使用 max($array) 我只是得到键,所以如果元素是 $array[43][54] 我得到“54”部分是键,但我还需要“43”部分,父键或不管它可以叫什么,我不明白如何得到它。
-
set
$array[0][0] = 5; $array[0][1] = 7;你会得到 0 而不是 1 如你所愿。打印max($array)看看它返回了什么 -
好的,所以在我的示例中 $index 不会返回密钥的最后一部分,而是返回第一个。我现在明白了,但不明白它是如何做到的以及如何获得密钥的第二部分?我现在看到 max() 返回包含每个“列”的所有最大值的数组,这是我正在寻找的关键的第二部分,但现在我很纠结,我不明白如何组合到获取该元素的完整键 ([x][y]) 以及当 needle 参数为数组时 array_search 如何仅返回一个结果(返回 max())
-
现在我对 max() 更加困惑了。我试过
$array[0][0] = 5323;$array[0][1] = 5346;$array[0][2] = 5424;$array[1][0] = 6000;$array[1][1] = 5412;$array[1][2] = 5543;$array[2][0] = 5651;$array[2][1] = 7000;$array[2][2] = 5254;var_dump(max($array));它返回没有700的subbaray .毕竟这是这个数组中的最大值,所以现在我完全糊涂了
标签: php arrays multidimensional-array