我正在尝试使用php查找文件中每一行的最大值。我的输入看起来像这样。
1x5x10
1x10x5
5x1x10
5x10x1
10x1x5
10x5x1
我的代码:
<?php
$myfile = fopen("day2_input.txt", "r") or die("Unable to open file!");
while(!feof($myfile)) {
$line = fgets($myfile);
$lineArr = explode("x", $line);
echo(max($lineArr)."\n");
}
fclose($myfile);
?>
这是奇怪的事情。如您在输入中看到的,每行的最大值是10,但这是我的输出:
5
5
5
10
5
10
在末尾包括一个空行。两个问题。为什么max()
-函数给出的东西不是10?以及为什么输出中有空行?行末的输入文件中没有空格。我也checkd使用阵列print_r()
上$lineArr
赋予:
Array
(
[0] => 1
[1] => 5
[2] => 10
)
Array
(
[0] => 1
[1] => 10
[2] => 5
)
Array
(
[0] => 5
[1] => 1
[2] => 10
)
Array
(
[0] => 5
[1] => 10
[2] => 1
)
Array
(
[0] => 10
[1] => 1
[2] => 5
)
Array
(
[0] => 10
[1] => 5
[2] => 1
)
您的爆炸事件是创建一个字符串数组,而不是整数数组。...因此,max应用字符串比较逻辑,并且10
小于5
字母顺序。
将您的字符串元素转换为整数,然后执行max()调用。
$lineArr = array_map('intval', explode("x", $line));
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句