我知道这是一个常规问题,我不想加入不知道 strpos() 返回字符串位置的人群,如果你想比较是否找到它,你必须使用 === 或 ==! 比较。
我的问题是,strpos每次都运行良好,但现在似乎有一个我找不到的问题,可能是因为我看了太久了。
我的代码是这样的:
$tmp = scandir("img/products");
$productImgs = array();
foreach ($tmp as $key => $value) {
foreach ($subCats as $_subItem) {
$_tmp = $_subItem["SUB_CAT"];
echo $value." => ".$_tmp."<br>";
if (strpos(rtrim($value), rtrim($_tmp)) !== FALSE) {
$productImgs[] = $value;
echo "lol<br>";
}
}
}
它基本上将图片存储在tmp数组中,然后循环遍历所有subCats数组以查看是否有匹配项。例如:
$_subItem["SUB_CAT"] = "Microplate leolvasók"
$value = "Microplate leolvasók.jpg"
当我回显所有值时,似乎有一个匹配项,但它不会被添加到数组中。
它打印出:Microplate leolvasók.jpg => Microplate leolvasók
除了 .jpg 结尾之外,我似乎没有发现这两个字符串之间没有区别,但由于 strpos() 的功能,它不应该计算在内。我的字符串在$subCats数组的 utf8 中,对于$tmp数组,它是 scandir 给你的。该目录不受保护,它和文件可以读写。
知道为什么不匹配吗?
提前致谢!