Выполнение strstr в массиве - PullRequest
0 голосов
/ 27 февраля 2012

Мне раньше как-то удавалось это сделать, и я забыл, как это сделать.Я продолжаю получать неопределенное уведомление о смещении для ассоциаций элементов (например, где $ 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 ]

1 голос
/ 27 февраля 2012

Вы должны повторять массив через foreach цикл , а не for. Ваш код должен выглядеть так:

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

strstr() может возвращать '', когда совпадает с последним символом, поэтому используйте !== false

Возвращает часть строки или FALSE, если игла не найдена.

Делать это с for в любом случае

Вы должны уметь обрабатывать и ассоциативные массивы:

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

Чем вам нужно было бы использовать такой код:

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

Вместо этого используйте foreach)

0 голосов
/ 27 февраля 2012

Вы сказали что-то подобное?

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

Для печати, которую вы хотите показать, я предполагаю, что $ a - это то, что вы ищете в этом массиве.

0 голосов
/ 27 февраля 2012

Я добавил скобку, которую вы пропустили во второй строке, и она работает для меня

  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;
    }
  }
 }
0 голосов
/ 27 февраля 2012
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;
    }
  }
 }

Сначала, если в функции отсутствует скобка.

...