max() 函数找不到正确的值。 php

max() function can't find correct value. php

我正在尝试获取数组中的最大值。 但是对整个数组使用 max() 它找不到最高值:

return键是2,不是正确的键,显然最高值在array(3)中。 请帮我找出我的错误。 下面是我的代码:

<?php
$hex_splited = [
        ['00','00','00'], 
        ['10', '11', '10'], 
        ['F0', '1A', 'C3'],
        ['0F', 'FE', 'F4'],
       ];
$arr_rgb = [];
$count2 = count($hex_splited);
for ($i=0; $i < $count2; $i++) { 
    $inn_count = count($hex_splited[$i]);
    for ($j=0; $j < $inn_count; $j++) { 
            $val = hexdec($hex_splited[$i][$j]);
            $arr_rgb[$i][$j] = $val;
    }
}
$max = max($arr_rgb);
var_dump($max);
$key = array_search($max, $arr_rgb);
echo "<pre>";
echo "array key is: " . $key;
echo "</pre>";

    echo "<table border='1'>";
for ($m=0; $m < $count2; $m++) {
    echo "<tr>";
    for ($k=0; $k < $inn_count; $k++) { 
        echo "<td>";
        echo $arr_rgb[$m][$k];
        echo "</td>";
    }
    echo "</tr>";
}
echo "</table>";

问题是 max() 在使用多维数组时并不总是像您预期的那样运行。

这段代码分两个阶段进行处理,首先找到最大值。由于这只是一个二维简单数组,您可以使用...

$max = max(array_map("max", $hex_splited));

这会将最大值应用于每个子数组,然后获取这些值的最大值。

所以在你的情况下,这将是 'FE'。然后作为将数据转换为十进制的循环的一部分,它将原始值与已经找到的最大值进行比较并存储密钥...

$key = 0;
for ($i=0; $i < $count2; $i++) {
    $inn_count = count($hex_splited[$i]);
    for ($j=0; $j < $inn_count; $j++) {
        $val = hexdec($hex_splited[$i][$j]);
        $arr_rgb[$i][$j] = $val;
        // Check if found the max value
        if ( $max == $hex_splited[$i][$j] ) {
            $key = $i;
        }
    }
}