0

私はこれが定期的な質問であることを知っており、 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 が返すものです。ディレクトリは保護されておらず、ファイルは読み書き可能です。

なぜ一致しないのですか?

前もって感謝します!

4

1 に答える 1