繁体   English   中英

有条件的PHP foreach仅提取第一个值

[英]PHP foreach with a condition only extract first value

我有一个数组

$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"

我怎样才能解决这个问题。 有人能帮我吗 !

尝试这个;

$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);

结果: 代码结果

您可以创建一个示例数组。

并将名称附加到它,如果它是id=2

码:

$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 '</pre>';
// Output: Popcorn and AirShou

您可以根据项目id过滤数组,然后检索列name

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

结果:

array(2) {
  [0] =>
  string(7) "Popcorn"
  [1] =>
  string(7) "AirShou"
}

通过此代码更改循环,您将获得两个名称,

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

只需获取数组中的名称,然后像这样爆破它:

$temp = array();
foreach ( $apps as $var ) if ($var['id'] == "2") {
 $temp[] = $var['name']
}
echo implode(' and ', $temp);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM