我期待这种数据
0 => array:3 [
0 => "12"
1 => "2017-03-28 05:29:56"
2 => "2017-03-29 05:29:56"
]
1 => array:3 [
0 => "10"
1 => "2017-03-28 05:29:56"
2 => "2017-03-29 05:29:56"
]
但我总是想出这种数据
array: [
0 => "10"
1 => "2017-03-28 05:29:56"
2 => "2017-03-29 05:29:56"
3 => "12"
4 => "2017-03-28 05:29:56"
5 => "2017-03-29 05:29:56"
]
这是我尝试的代码,我只是想将$ data上的数据传输到$ new_data,但它总是给出不同的结果,我不知道如何重构我的代码
$data =[
0 => array:3 [
0 => "Employee ID"
1 => "time_in (YYYY-MM-DD HH:mm:ss)"
2 => "time_out (YYYY-MM-DD HH:mm:ss)"
]
1 => array:3 [
0 => "10"
1 => "2017-03-28 05:29:56"
2 => "2017-03-29 05:29:56"
]
2 => array:3 [
0 => "12"
1 => "2017-03-28 05:29:56"
2 => "2017-03-29 05:29:56"
]
3 => false
]
$new_data=[];
for ($i=1; $i < $len-1; $i++) {
for ($x=0; $x < 3 ; $x++) {
array_push($new_data,$data[$i][$x]);
}
}
请帮我解释一下我的逻辑,我只是新的数组
答案 0 :(得分:0)
你有一个数组$new_data
,你可以推送六个单独的新项目。这就是为什么你得到一个包含六个项目的单个数组。
如果你把它改成这个,你得到你想要的东西:
for ($i = 1; $i < $len - 1; $i++) {
$new_item = [];
for ($x = 0; $x < 3; $x++) {
array_push($new_item, $data[$i][$x]);
}
array_push($new_data, $new_item);
}
这样,您可以将三个项目推送到新阵列,然后将此阵列推送到$new_data
。
在我看到你的编辑之后:你也可以这样做:
for ($i = 1; $i < $len - 1; $i++) {
array_push($new_data, $data[i]);
}
如果您总是想要推送完整的块,则无需迭代这三个单项。
或者,因为您只想删除第一个和最后一个条目:
unset($data[0]);
array_splice($data, count($data) - 1, 1); // Remove last entry and rebuild indices.