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 数组。
  • 如果在 $notes 数组的任意位置找到完整的 $imglist[$i] 字符串,则在 $notes 中获取该值的键/索引,并回显 $notes[$key] 和 $imglist[$i]。或回显 $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 回答