0

コードは次のとおりです。

<?php
$notes = array("Main/folder/02/12.jpg = twelve",
               "Main/folder/02/16.jpg = sixteen"
               );
$imglist = array( "12.jpg",
                  "13.jpg",
                  "14.jpg",
                  "15.jpg",
                  "16.jpg"
                  );
for ($i=0;$i<(count($imglist));$i++){
    if(in_array($imglist[$i], $notes)){
        echo $imglist[$i];
        //Get key($notes) and //Cant figure out how to implement this key();
        echo $notes[$key];
    } //if ENDS
} //for ENDS
?>

私が必要としているのは、$ i=0と$i= 4の場合、if()がTRUEを返し、エコーを実行する必要があるということです。

擬似コード/ロジックは次のとおりです。

  • すべての$imglist配列を1つずつ繰り返します。
  • 完全な$imglist[$i]文字列が$notes配列のどこかにある場合は、その値のキー/インデックスを$ notesで取得し、$ notes[$key]と$imglist[$i]をエコーし​​ます。またはEcho$notes[$key]。

たとえば、このforループの目的の出力は次のようになります。

12.jpg Main/folder/02/12.jpg = twelve
16.jpg Main/folder/02/16.jpg = sixteen

問題は、このすべてのコードが何も出力していないことです。条件がTRUEを返さない場合を意味します。理論的には、$ iが0と4の場合はTRUEを返すはずですが、私のif()条件は間違っていますか?PHPは$imglist[$ i]を文字列として使用していませんか?strposを使用する必要がありますか?

4

2 に答える 2

3

in_array()大まかな比較を使用して要素を検索しますが、探している結果は得られません。

代わりに、次のように、独自のロジックを使用strpos()して(推測どおりに使用)、必要な機能を実装する必要があります。

foreach( $imglist as $image_key => $image)
    foreach( $notes as $notes_key => $note)
        if( !(strpos( $note, $image) === false))
            echo "$image $note\n";

これは出力します

12.jpg Main/folder/02/12.jpg = twelve
16.jpg Main/folder/02/16.jpg = sixteen
于 2012-07-03T18:21:40.517 に答える
0

strpos()を使用してこれを実現できます

$notes = array("Main/folder/02/12.jpg = twelve",
           "Main/folder/02/16.jpg = sixteen"
           );
$imglist = array( "12.jpg",
              "13.jpg",
              "14.jpg",
              "15.jpg",
              "16.jpg"
              );


foreach($imglist as $image){
 foreach($notes as $key => $note){
$position = strpos($note,$image);
if ($position !== false){
 echo "$image $note <br>";  
}
}
}
于 2012-07-03T18:31:09.320 に答える