私はこれが定期的な質問であることを知っており、 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 の末尾を除いて、2 つの文字列に違いは見られなかったようですが、strpos() の機能のため、カウントされません。私の文字列は$subCats配列では utf8 で、 $tmp配列では scandir が返すものです。ディレクトリは保護されておらず、ファイルは読み書き可能です。
なぜ一致しないのですか?
前もって感謝します!