PHP in_array()总是返回false

Eth*_*n H 6 php arrays

当我使用in_array()时,PHP总是返回false,并且它是否在数组中并不重要.例如:

$list = 'test
list
example';
$list_arr = array();
$list_arr = explode("\n",$list);
if (in_array('test',$list_arr)) {
    echo 'Found';
}
else {
    echo 'Not Found';
}
Run Code Online (Sandbox Code Playgroud)

返回'Not Found',即使'test'是数组中的值

$list = 'test
list
example';
$list_arr = array();
$list_arr = explode("\n",$list);
if (in_array('qwerty',$list_arr)) {
    echo 'Found';
}
else {
    echo 'Not Found';
}
Run Code Online (Sandbox Code Playgroud)

返回"未找到",应该如此

当它应该是真的时,为什么它会返回错误?请提出任何建议.我实际使用的列表有超过10K的值,因此我在这里缩短了它.

Mat*_*lin 10

如果您正在使用这个确切的示例并在Windows PC上编码,则问题来自于Windows使用以下方式存储换行符:

\r\n
Run Code Online (Sandbox Code Playgroud)

因此,当您在\n上拆分时,只有在项目末尾保留一个不可见的\ r \n,因此不匹配.


Roc*_*mat 8

您的列表实际上是由\r\n,而不仅仅是\n.

$list_arr = explode("\r\n",$list);
Run Code Online (Sandbox Code Playgroud)