PHP 中的 max 函数在字符串上失败


Max function in PHP fails on strings?

给定此列表.txt文件:

9
10
19

你猜怎么着?

max(split("'n",$file_handle)) gives me 9

max(explode(PHP_EOL,$file_handle)) gives me 9

现在,在一个字符串上:

$string = "9 10 19"; max(split("'n",$string)) gives me 19

更新:从文件中读取时,我得到字符串,而 max() 在比较字符串值时似乎找不到正确的最大值?! 9 大于 10。字符串上的相同文件内容工作正常。file_get_contents()/fread() 同样的问题。

您确定 EOL(行尾)是"'"吗?

看看这个答案:

通过换行分解 PHP 字符串

并检查此内容以获取 EOL 解释:

' 和 ''r 之间的区别?

这就解决了。对我来说仍然是一个谜,为什么值来自文件的字符串和来自具有相同内容的字符串的数字。无论如何,这是修复:

max(array_map('intval', split("'n",$file_handle)));