在阵列上执行strstr

时间:2012-02-27 10:09:49

标签: php arrays string search offset

我设法在某种程度上做到这一点并且忘记了怎么做。我一直得到元素关联的未定义偏移通知(例如,$ arr [$ i] =>“某事”)。例如。对于以下内容:

for($i=0;$i<count($arr);$i++) {

  if($a = strstr($arr[$i], "str"))
  {
    print "Found: ". $a. "<br>";
  }
  else {

    if($i >= count($arr))
    {
      print "Couldn't find <i>str</i>.<br>";
      return false;
    }
  }
}

这将无法工作,并将输出未定义的偏移通知。非常感谢任何帮助!

4 个答案:

答案 0 :(得分:1)

您应该使用foreach loop而不是for来迭代数组。您的代码应如下所示:

foreach( $arr as $item){
    if(($a = strstr($item, "str")) !== false){
        print "Found: ". $a. "<br>";
    }
}

strstr()在最后一个字符匹配时可能会返回'',因此使用!== false

  

返回字符串的部分,如果未找到needle,则返回FALSE。

无论如何<{1}}

你必须能够处理关联数组:

for

比你必须使用这样的代码:

$arr = (
  'key1' => 'val1',
  'key2' => 'val2',
   ...
);

请改用$keys = array_keys( $arr); $count = count( $keys); for( $i = 0; $i < $count; $i++){ $item = $arr[ $keys[$i]]; } 。)

答案 1 :(得分:0)

for($i=0;$i<count($arr);$i++) {
  if($a = strstr($arr[$i], "str")) {
    print "Found: ". $a. "<br>";
  } else {
    if($i >= count($arr)) {
      print "Couldn't find <i>str</i>.<br>";
      return false;
    }
  }
 }

首先,如果函数缺少括号。

答案 2 :(得分:0)

我在第二行添加了你缺少的括号,它适用于我

  for($i=0;$i<count($arr);$i++) {
  if($a = strstr($arr[$i], "str")) {
    print "Found: ". $a. "<br>";
  } else {
    if($i >= count($arr)) {
      print "Couldn't find <i>str</i>.<br>";
      return false;
    }
  }
 }

答案 3 :(得分:0)

你说过这样的话吗?

foreach ($arr as $value) {
    if(strstr($value, $a)) {
        print "Found: ". $a . "<br />";
    }
}

对于你想要展示的印刷品,我认为$ a是你在这个数组中寻找的东西。