如何使用数组作为$ haystack和$ array [$ i](字符串)作为php中的针?

时间:2012-07-03 18:13:21

标签: php arrays strpos

代码是:

<?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&amp;做回声。

伪代码/逻辑是:

  • 逐个遍历所有$ imglist数组。
  • 如果在$ notes数组中找到完整的$ imglist [$ i]字符串,则在$ 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&amp;时,它应该返回TRUE。 4.我的if()条件错了吗? php没有将$ imglist [$ i]作为字符串吗?我应该使用strpos吗?

2 个答案:

答案 0 :(得分: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";

will output

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

答案 1 :(得分: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>";  
}
}
}