PHP foreach с условием только извлечь первое значение - PullRequest
1 голос
/ 06 марта 2019

У меня есть массив как

$apps = array(
array(
    'id' => '2',
    'name' => 'Popcorn'
),
array(
    'id' => '1',
    'name' => 'EveryCord'
),
array(
    'id' => '2',
    'name' => 'AirShou'
),

Здесь я хочу напечатать имена, где id="2". Поэтому я попробовал это с помощью следующего кода.

foreach ( $apps as $var ) if ($var['id'] == "2") {
 echo $var['name']
}

Проблема в том, что он выводит только первый результат массива как

"Popcorn".

Но я хочу извлечь все результаты, которые

"Popcorn and Airshou"

Как я могу это исправить. Может ли кто-нибудь помочь мне!

Ответы [ 5 ]

4 голосов
/ 06 марта 2019

Попробуйте это;

$apps = [
    ['name' => 'Fish', 'id' => 2],
    ['name' => 'Chips', 'id' => 1],
    ['name' => 'Sticks', 'id' => 2],
];

$using = [];
foreach ( $apps as $var ) {
    if ($var['id'] == "2") {
        $using[] = $var['name'];
    }
}

echo implode(" and ", $using);

РЕЗУЛЬТАТ: Code result

1 голос
/ 06 марта 2019

Вы можете отфильтровать массив по элементу id, а затем извлечь столбец name:

array_column(array_filter($apps, function($v){return '2' === $v['id'];}), 'name')

результат:

array(2) {
  [0] =>
  string(7) "Popcorn"
  [1] =>
  string(7) "AirShou"
}
1 голос
/ 06 марта 2019

Вы можете создать образец массива.

и добавить к нему имя, если оно id=2

Код:

<code>$apps = [
['id' => '2', 'name' => 'Popcorn'],
['id' => '1', 'name' => 'EveryCord'],
['id' => '2', 'name' => 'AirShou']
];
$names = [];
if (! empty($apps)) {
    foreach ($apps as $elem) {
        if ($elem['id'] == 2) {
            $names[] = $elem['name'];
        }
    }
}
$finalName = ! empty($names) ? implode(' and ', $names) : '';
echo '<pre>';print_r($finalName);echo '
';// Вывод: Popcorn и AirShou
0 голосов
/ 06 марта 2019

Просто возьмите имена в массиве и взорвите его так:

$temp = array();
foreach ( $apps as $var ) if ($var['id'] == "2") {
 $temp[] = $var['name']
}
echo implode(' and ', $temp);
0 голосов
/ 06 марта 2019

Измените ваш цикл с помощью этого кода, и вы получите оба имени,

foreach ( $apps as $var ){
    if ($var['id'] == "2") {
        echo $var['name'];
    }
}
...