在foreach循环中输出逗号分隔值[重复]
Posted
技术标签:
【中文标题】在foreach循环中输出逗号分隔值[重复]【英文标题】:Output comma separated values in foreach loop [duplicate] 【发布时间】:2021-06-23 21:20:30 【问题描述】:我有这个数组:
$bonusarraymain = array(
array( "bonus1"=> "Testitem" ,
),
array( "bonus2"=> "" ,
),
array( "bonus3"=> "444" ,
),
array( "bonus4"=> "" ,
)
);
我想回显不为空的值。这些值也应该用逗号分隔。最后一个值后不应有逗号。
这是我输出值的方式,但是如何用逗号分隔它们?
foreach ($bonusarraymain as $bonus)
echo $bonus['bonus1'];
echo $bonus['bonus2']['0'];
echo $bonus['bonus2']['1'];
echo $bonus['bonus3'];
echo $bonus['bonus4'];
【问题讨论】:
那么我在最后一个值后面有个逗号。我需要检查一下哪个值是最后一个值,所以它不会在这个值之后设置逗号。 【参考方案1】:使用这些值创建一个新数组并使用implode() 插入逗号
foreach ($bonusarraymain as $bonus)
$items = array($bonus['bonus1'],
$bonus['bonus2']['0'],
$bonus['bonus2']['1'],
$bonus['bonus3'],
$bonus['bonus4']);
echo implode(',' , $items);
将留给您弄清楚如何过滤掉空的。提示:array_filter()
【讨论】:
【参考方案2】:也可以使用 array_reduce 来填充一个新的过滤数组,然后简单地将结果数组与 implode 连接起来。
<?php
$bonusarraymain = [
[ "bonus1"=> "Testitem" ],
[ "bonus2"=> "" ],
[ "bonus3"=> "444" ],
[ "bonus4"=> "" ]
];
echo implode(', ', array_reduce($bonusarraymain, function($acc, $cur)
$cur = array_values($cur);
if (isset($cur[0]) && !empty($cur[0])) $acc[] = $cur[0];
return $acc;
, []));
结果:Testitem, 444
【讨论】:
【参考方案3】:很难看出你想做什么。 $test 应该是 $bonus 吗?
更新:
使用 for 循环并检查索引。像这样的:
for ($bonusId = 0; $bonusId < count($bonusarraymain); $bonusId++)
echo $bonus['bonus1'] . ",";
echo $bonus['bonus2']['0'] . ",";
echo $bonus['bonus2']['1'] . ",";
echo $bonus['bonus3'] . ",";
echo $bonus['bonus4'];
if ($bonusId < count($bonusarraymain)-1)
echo ","
【讨论】:
是的,我改了。但是如何在最后一个之后的值之间使用逗号? 更新了我的回复以包含您的答案。以上是关于在foreach循环中输出逗号分隔值[重复]的主要内容,如果未能解决你的问题,请参考以下文章
foreach 循环中的逗号分隔变量到 php 脚本中的 xml 行