PHP in_array()找不到数组中的内容

时间:2012-01-06 15:37:27

标签: php arrays

我有一个非常简单的脚本,它读出一个txt文件,将内容放入一个数组中。

哪个完美,我可以做print_r($array);它会输出所有数据。

我的剧本:

<?php

$file = 'countries.txt';
$countries_output = file_get_contents($file);

$countries_pieces = explode("\n", $countries_output);

if (in_array("Sweden", $countries_pieces)) {
   echo "Sweden was found";
}
else 
{
echo'NOT FOUND';
}
print_r($countries_pieces);
?>

我不明白为什么它在我的阵列中找不到“瑞典”的值,当它显然在那里时。

这是输出:https://pastebin.com/z9rC9Qvk

我也打印了数组,所以你可以看到'瑞典'确实在数组中。

希望有人可以提供帮助:)

2 个答案:

答案 0 :(得分:9)

您很可能没有考虑新的线条字符。以下是使用file()的清洁解决方案,应该适合您:

$file = 'countries.txt';
$countries_pieces = file($file, FILE_IGNORE_NEW_LINES);

if (in_array("Sweden", $countries_pieces)) {
   echo "Sweden was found";
} else {
    echo'NOT FOUND';
}

如果仍有一些问题,常见的规范化是trim()值来删除一些遗留问题:

$countries_pieces = array_map('trim', $countries_pieces);

但这不能解决所有问题。

答案 1 :(得分:1)

来自Windows机器的countries.txt?如果是这样,拆分'\ n'将不会很好,因为每行都有一个'\ _ \'。

您的print_r输出似乎表明,因为每行输出之间似乎有一个额外的换行符。