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;
}
}
}
我正在尝试获取数组中的最大值。 但是对整个数组使用 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;
}
}
}