如何使用php推送数组对象中的数据

时间:2017-05-12 06:36:19

标签: php

  

我期待这种数据

 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]);

     }
}

请帮我解释一下我的逻辑,我只是​​新的数组

1 个答案:

答案 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.