PHP - Implode仅显示1个结果

时间:2015-08-12 10:52:58

标签: php

我遇到implode()的问题。 该数组来自一个会话。 它仅显示1个结果。

这是我的代码:

foreach ($this->cart->contents() as $list)
{

  $ma = array($list['id']);
  $na= implode(', ', $ma);      


}

echo $na;

但是当我执行此代码时

foreach ($this->cart->contents() as $list)
{

  $ma = array($list['id']);
  $na= implode(', ', $ma);      


  echo $na;

}

除了逗号作为分隔符之外,所有内容都会显示出来。 我希望有人可以提供帮助

5 个答案:

答案 0 :(得分:1)

假设您每次foreach迭代$this->cart->content()时都应该获取一个数组项,那么您应该检查逻辑。在每次迭代时,$ma都会收到一个新的array(),其中只有一个元素包含$list['id']值。每次迭代都会覆盖$ma的前一个值。

当它达到$na = implode(',', $ma);时,实际上没有足够的元素来形成具有分隔的内爆列表,因为没有要分隔的元素(只有{{1}的最后一个元素})。

编辑: 它可能实现你想要做的事情

$ma

答案 1 :(得分:0)

使用逗号(concate)简单.,)您的ID。

$na = "";

foreach ($this->cart->contents() as $list)
{

  $ma = $list['id'];
  $na .= ",".$ma;


}

echo $na = substr($na, 1, strlen($na));

ideone Demo

答案 2 :(得分:0)

$ids = [];
foreach ($this->cart->contents() as $list) {
    $ids[] = $list['id'];
}
echo implode(', ', $ids);

您需要在循环后将所有值累积到一个数组(此处为$ids),然后将implode累加到一起。

假设$this->cart->contents()是一个普通数组,您可以将其简化为:

echo implode(', ', array_map(function ($item) { return $item['id']; }, $this->cart->contents()));

甚至:

echo implode(', ', array_column($this->cart->contents(), 'id'));

答案 3 :(得分:-1)

试试这样:

$na = '';
foreach ($this->cart->contents() as $list)
{
  $ma = array($list['id']);
  $na .= implode(', ', $ma).',';      

}
echo $na;

要删除最后的逗号,您可以使用:

$na = substr($na, 0, strlen($na)-1);

答案 4 :(得分:-1)

 $na = '';     
 foreach ($this->cart->contents() as $list)
 {
    $ma = array($list['id']);
    $na= implode(', ', $ma);      
 }
 echo $na;

在上面的代码中,您将覆盖变量$ na($ na = implode(',',$ ma);在此行中)。

 $na = '';
 foreach ($this->cart->contents() as $list)
 {
   $ma = array($list['id']);
   $na= implode(', ', $ma);      
   echo $na;
 }

在这里,您可以同时打印$ na的值。仍覆盖$ na。

 $na = '';
 foreach ($this->cart->contents() as $list)
 {

    $ma = array($list['id']);
    if($na == '')
    $na .= implode(', ', $ma);
    else
    $na .= ', ' . implode(', ', $ma);      
 }
 echo $na;

所以这里提出的解决方案是使用此行中的连接$ na。= implode(',',$ ma)。然而,这不是完整的解决方案。