php max函数从数组返回最小值

时间:2018-09-26 23:28:24

标签: php file max

这是我的第一篇文章。抱歉,如果我做错了事...

无论如何,我有一个文件可以通过php更新,而这正是它:

31\n
127\n
131\n
124\n
144\n
142\n
133\n
133\n
9\n
0\n
22\n
18\n

我用php编写了这个脚本:

$logContents = file_get_contents("logs/mainlog.txt");
$logitemArray = explode("\n", $logContents);

echo max($logitemArray);

但它回显9.为什么?它在php文档中说max()应该返回数组中的最大值

预先感谢

2 个答案:

答案 0 :(得分:3)

explode()返回一个字符串数组,因此按字典顺序进行比较。您需要将它们转换为数字,以便max()将它们进行数字比较。

$logitemArray = array_map('intval', explode("\n", $logContents));
echo max($logitemArray);

顺便说一句,您可以使用file()函数将文件直接读取到行数组中,而不必使用file_get_contents()后跟explode()的情况。

$logitemArray = array_map('intval', file("logs/mainlog.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES));

答案 1 :(得分:0)

就像评论所说的那样,这是因为9是最大的文字学价值。如果它说900,那还是一样。

这是因为当用explode分割字符串时,会得到一个字符串类型的数组。下面的代码会将数组中的元素转换为应该给出预期行为的整数。

$logitemArray = array_map('intval', explode("\n", $logContents));