在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 行

foreach循环上的PowerShell + =添加重复的实例

如何从mysql表中查找逗号分隔值

php 逗号分隔符ForEach循环除了最后

在文本文件中使用逗号分隔值打印输出

循环通过逗号分隔的 shell 变量