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

PHP中的Max函数在字符串上失败?,php,Php,给定此list.txt文件: 9 10 19 你猜怎么着 max(split(“\n”,$file\u handle))给我9 max(explode(PHP\u EOL,$file\u handle))给我9 现在,在字符串上: $string=“9 10 19"; max(split(“\n”,$string))给我19 更新:读取文件时,我得到字符串,而max()在比较字符串值时似乎找不到正确的max?!9比10大。字符串上的相同文件内容可以正常工作。文件\u get\u content

给定此list.txt文件:

9
10
19
你猜怎么着

max(split(“\n”,$file\u handle))给我9

max(explode(PHP\u EOL,$file\u handle))给我9

现在,在字符串上:

$string=“9
10
19";
max(split(“\n”,$string))给我19

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

是否确定下线(行尾)为“\n”

看看这个答案:

并检查以下EOL说明:


这就解决了问题。对于我来说,仍然是一个谜,为什么值作为字符串来自文件,而作为数字来自具有相同内容的字符串。无论如何,这里有一个解决办法:

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

上面提到的90是我对字符串比较的期望,因为它从第一个字符开始,9大于100中的第一个1。我不确定在PHP中实现这一点的最佳方法,但您可能需要这样的东西:worksfine:。读取文件时出错。是的,sectus,这就是问题所在。从文件中读取时,get被解释为“字符串”,因此9大于10。我想知道为什么?不,max处理数字字符串很好。展示一下你的阅读情况。似乎没有。。。当我转换成数字时,它可以成功地找到正确的最大值。这确实是问题所在!文件中使用的dos结束行字符导致PHP在默认情况下将其解释为字符串而不是整数。我将list.txt文件转换为使用unix换行符,而不是dos换行符,现在脚本按预期工作。