我遇到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;
}
除了逗号作为分隔符之外,所有内容都会显示出来。 我希望有人可以提供帮助
答案 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));
答案 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)。然而,这不是完整的解决方案。