[英]PHP in_array() does not find content that is in an array
我有一个非常简单的脚本,可以读取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);
?>
我不明白为什么当它明显位于数组中时为什么没有在数组中找到值“ Sweden”。
这是输出: https : //pastebin.com/z9rC9Qvk
我还使用了print_r数组,因此您可以看到数组中确实包含“瑞典语”。
希望有人可以帮助:)
您很可能没有考虑换行符。 以下是使用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);
但这不能解决所有问题。
Windows机器上的countries.txt是吗? 如果是这样,则对'\\ n'进行拆分将无法很好地进行,因为每行还有一个'\\ r'。
您的print_r输出似乎表明这是因为输出的每一行之间似乎都有一个额外的换行符。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.