#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. Так что это неправильно.