Многомерные массивы

#php #multidimensional-array #logic

#php #многомерный массив #Логические

Вопрос:

У меня есть такая структура массива, которую я могу распечатать просто отлично:

 Array
(
  [0] => Array
    (
      [title] => blah
      [author] => Bob
      [link] => randomlink
    )

  [1] => Array
    (
      [title] => random
      [author] => George
      [link] => randomlink
    )

  [2] => Array
    (
      [title] => blah
      [author] => Bob
      [link] => randomlink
    )
)
 

В принципе, я хочу иметь возможность распечатывать только ту информацию в массиве, которая связана с ‘автором’ ‘Bob’. Как вы можете видеть, у него там два элемента. Когда я распечатываю массив, он должен отображать только массивы 0 и 2, поскольку это единственные, которые содержат ‘author’, который является ‘Bob’. Есть идеи?

Ответ №1:

 foreach ($array as $a) 
{
 if($a['author'] === 'Bob') {
   echo $a['title'];
   echo $a['author'];
   echo $a['link'];
 }
}
 

Комментарии:

1. Да, это сделало это. Большое спасибо!

Ответ №2:

 foreach($arr as $item)
{
   if($item['author'] != 'Bob')
   {
      continue;
   }
   // print out Bob's stuff
}
 

Ответ №3:

Это код:

 foreach($array as $subarray)
{
   if(strcasecmp($subarray['author'],'Bob') === 0)
      print_r($subarray);
}
 

Ответ №4:

Просто foreach

 foreach ($array as $item) {
  if ($item['author']) {
    // Do something with $item
  }
}
 

Ответ №5:

хорошо! попробуйте это :

 for($i=0;$i<count($array);$i  ){
if($array[$i]['author'] == 'bob'){
    echo $array[$i]['title']." > ".$array[$i]['author']." > ".$array[$i]['link']."rn<br>";
   }
      }
 

Комментарии:

1. Примечание: не используйте функции в for -test-expression .

2. @AurelioDeRosa как он и просил, он хочет печатать только с автором «bob», поэтому, если он существует или соответствует, он не будет повторять его…

3. @KingCrunch о какой функции вы говорите! count() — это зарезервированная функция, думаю, я также могу объявить значение с любым другим значением раньше, чтобы не было никаких проблем? вы говорите о count() ?

4. @Soumo: Тестовое выражение выполняется на каждой итерации, поэтому я предлагаю определить количество значений раньше. Для этого вы можете использовать выражение «pre» ideone.com/kTfVX В общем, это была не настоящая проблема, а просто побочная заметка 😉

5. @SoumoGorai Это не суть вопроса. Если ключ массива будет равен 1, 2 и 4, используя свой цикл, вы попытаетесь выполнить поиск по индексу 1, 2 и 3. Так что это неправильно.