这是我的第一篇文章。抱歉,如果我做错了事...
无论如何,我有一个文件可以通过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()应该返回数组中的最大值
预先感谢
答案 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));