【问题标题】:Output comma separated values in foreach loop [duplicate]在foreach循环中输出逗号分隔值[重复]
【发布时间】: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'];
            
       }

【问题讨论】:

  • 那么我在最后一个值后面有个逗号。我需要检查一下哪个值是最后一个值,所以它不会在这个值之后设置逗号。

标签: php


【解决方案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 ","
        }        
      }
      

      【讨论】:

      • 是的,我改了。但是如何在最后一个之后的值之间使用逗号?
      • 更新了我的回复以包含您的答案。
      猜你喜欢
      • 2016-04-24
      • 2017-07-04
      • 2012-10-22
      • 2016-12-04
      • 1970-01-01
      • 2013-02-20
      • 2012-02-17
      • 1970-01-01
      • 2011-07-26
      相关资源
      最近更新 更多