Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 数组的操作_Php_Arrays - Fatal编程技术网

Php 数组的操作

Php 数组的操作,php,arrays,Php,Arrays,我花了很多时间试图弄清楚如何创建一个循环 是我的php数组。我想操纵这个数组的偏移量,从0到1,1到2,2到3,3到4 Array ( [0] => 2018-02-26 13:15 [1] => 2018-02-26 13:30 [2] => 2018-02-26 13:45 [3] => 2018-02-26 14:00 [4] => 2018-02-26 14:15

我花了很多时间试图弄清楚如何创建一个循环 是我的php数组。我想操纵这个数组的偏移量,从0到1,1到2,2到3,3到4

    Array
    (
        [0] => 2018-02-26 13:15
        [1] => 2018-02-26 13:30
        [2] => 2018-02-26 13:45
        [3] => 2018-02-26 14:00
        [4] => 2018-02-26 14:15
        [5] => 2018-02-26 14:30
        [6] => 2018-02-26 14:45
        [7] => 2018-02-26 15:00
        [8] => 2018-02-26 15:15
    )
我想操纵这个数组的偏移量,从0到1,1到2,2到3,3到4。 我正在努力实现以下目标。需要这方面的帮助。我是新来的,所以添加随机测试请忽略这一点

Array
    (
       [0] => Array
            (
                [start_datetime] => 2018-02-26 13:15
                [end_datetime] => 2018-02-26 13:30
                [break] => 0
            )

        [1] => Array
            (
                [start_datetime] => 2018-02-26 13:30
                [end_datetime] => 2018-02-26 13:45
                [break] => 0
            )
        [2] => Array
            (
                [start_datetime] => 2018-02-26 13:45
                [end_datetime] => 2018-02-26 14:00
                [break] => 0
            )
        [3] => Array
            (
                [start_datetime] => 2018-02-26 14:00
                [end_datetime] => 2018-02-26 14:15
                [break] => 0
            )
         .....
    )

您可以使用
for
foreach
对日期的索引位置进行迭代,并将当前索引增加1,以检索所需的
结束日期。重复迭代,直到数组结束或未定义
结束日期

$data = [
    0 => '2018-02-26 13:15',
    1 => '2018-02-26 13:30',
    2 => '2018-02-26 13:45',
    3 => '2018-02-26 14:00',
    4 => '2018-02-26 14:15',
    5 => '2018-02-26 14:30',
    6 => '2018-02-26 14:45',
    7 => '2018-02-26 15:00',
    8 => '2018-02-26 15:15'
];
$store = [];
$l = count($data)-1;
for($i = 0; $i<$l; $i++) {
    if(!isset($data[$i+1])){
        continue;
    }
    $store[] = [
        'start_date' => $data[$i],
        'end_date' => $data[$i+1],
        'break' => 0
    ];
}
var_dump($store);

如果您需要验证日期位置,请告诉我,我将演示一种基于验证的方法来填充数组。

fyrye和我有相同的方法,我只是更喜欢
foreach()


不知道顶部数组与底部数组的关系“我是新来的,所以添加随机测试请忽略此”:如果您的问题是好的,StackOverflow会让您立即提问。否则(你必须添加随机文本或代码)你可能做错了什么。如果您不同意,您可以询问(需要15个声誉)。@rtfm我更改了阵列我实际上更喜欢
foreach
以及:)请记住,这将导致
注意:未定义的偏移量:9
用于最后一项。很难知道是否需要8个无结束日期时间。因此,我不确定我是否应该完全排除创建8,还是放弃创建8并停止通知-因此最终决定在@fyrye中两者都不做
array(8) {
  [0]=>
  array(3) {
    ["start_date"]=>
    string(16) "2018-02-26 13:15"
    ["end_date"]=>
    string(16) "2018-02-26 13:30"
    ["break"]=>
    int(0)
  }
  [1]=>
  array(3) {
    ["start_date"]=>
    string(16) "2018-02-26 13:30"
    ["end_date"]=>
    string(16) "2018-02-26 13:45"
    ["break"]=>
    int(0)
  }
  [2]=>
  array(3) {
    ["start_date"]=>
    string(16) "2018-02-26 13:45"
    ["end_date"]=>
    string(16) "2018-02-26 14:00"
    ["break"]=>
    int(0)
  }
  [3]=>
  array(3) {
    ["start_date"]=>
    string(16) "2018-02-26 14:00"
    ["end_date"]=>
    string(16) "2018-02-26 14:15"
    ["break"]=>
    int(0)
  }
  [4]=>
  array(3) {
    ["start_date"]=>
    string(16) "2018-02-26 14:15"
    ["end_date"]=>
    string(16) "2018-02-26 14:30"
    ["break"]=>
    int(0)
  }
  [5]=>
  array(3) {
    ["start_date"]=>
    string(16) "2018-02-26 14:30"
    ["end_date"]=>
    string(16) "2018-02-26 14:45"
    ["break"]=>
    int(0)
  }
  [6]=>
  array(3) {
    ["start_date"]=>
    string(16) "2018-02-26 14:45"
    ["end_date"]=>
    string(16) "2018-02-26 15:00"
    ["break"]=>
    int(0)
  }
  [7]=>
  array(3) {
    ["start_date"]=>
    string(16) "2018-02-26 15:00"
    ["end_date"]=>
    string(16) "2018-02-26 15:15"
    ["break"]=>
    int(0)
  }
}
<?php

   $a=array (
        '0'=>'2018-02-26 13:15',
        '1'=>'2018-02-26 13:30',
        '2'=>'2018-02-26 13:45',
        '3'=>'2018-02-26 14:00',
        '4'=>'2018-02-26 14:15',
        '5'=>'2018-02-26 14:30',
        '6'=>'2018-02-26 14:45',
        '7'=>'2018-02-26 15:00',
        '8'=>'2018-02-26 15:15'
    );

    $new=array();

    foreach ($a as $k=>$each){ //loop each
    $new[$k]['start_datetime']=  $a[$k]; // the current value in the array
    $new[$k]['end_datetime'] = $a[$k+1];//the next value in the array 
    $new[$k]['break'] = 0;

    }

print_r($new);