为什么以下代码输出0
索引?
我希望索引为:0 1 2 3 4 ...
。我该如何解决?
代码:
foreach ($query->result() as $row){
$data = json_decode($row->residence,true);
foreach($data as $datum){
$newArray = array_chunk($datum['units'], 3);
foreach($newArray as $newA){
$output = array(implode(",",$newA));
echo print_r($output).'<br>'; //this is output
}
}
}
输出:
数组([0] =&gt;萨拉姆,11,11)1
数组([0] =&gt; khobe,22,22)1
数组([0] =&gt;萨拉姆,55,55)1
数组([0] =&gt; khobe,66,66)1
我想要这个输出:
数组([0] =&gt;萨拉姆,11,11)1
数组([1] =&gt; khobe,22,22)1
数组([2] =&gt;萨拉姆,55,55)1阵列([3] =&gt; khobe,66,66)1
更新
我的JSON在数据库中编码:
[{
"units": ["salam", "11", "11", "khobe", "22", "22"],
}, {
"units": ["salam", "55", "55", "khobe", "66", "66"],
}]
答案 0 :(得分:1)
在这一行$output = array(implode(",",$newA));
上,您为每组结果创建一个新数组,因此偏移始终从0开始。
试试这个:
$output = array();
foreach ($query->result() as $row){
$data = json_decode($row->residence,true);
foreach($data as $unit) {
$output[] = implode(',', $unit['units']);
}
}
的print_r($输出);
我从单行获得以下输出:
Array
(
[0] => salam,11,11,khobe,22,22
[1] => salam,55,55,khobe,66,66
)
答案 1 :(得分:0)
试试这个
$output[] = array(implode(",",$newA));
答案 2 :(得分:0)
在第三个foreach中,你需要将$ output添加到一个新数组,然后在循环之后添加print_r。
E.g。
foreach ($query->result() as $row){
$data = json_decode($row->residence,true);
foreach($data as $datum){
$newArray = array_chunk($datum['units'], 3);
$count = 0;
foreach($newArray as $newA){
$output = array($count =>implode(",",$newA));
$count++;
print_r($output).'<br>'; //this is output
}
}
}
或类似的。 您可能需要移动$ count = 0;
答案 3 :(得分:0)
你可以使用像这样的循环标准而不是foreach循环来实现:
for ($i = 0; $i < count($newArray); $i++) {
// ...
}
答案 4 :(得分:0)
每次调用array
函数时,都会创建所有单独的数组。要将项目添加到同一数组,请使用$output[] = $valueToAdd
:
$output = array();
foreach ($query->result() as $row){
$data = json_decode($row->residence,true);
foreach($data as $datum){
$newArray = array_chunk($datum['units'], 3);
foreach($newArray as $newA){
$output[] = implode(",",$newA);
}
}
}
print_r($output).'<br>'; //this is output