[英]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"
我怎样才能解决这个问题。 有人能帮我吗 !
您可以创建一个示例数组。
并将名称附加到它,如果它是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.