Php 数组的操作
我花了很多时间试图弄清楚如何创建一个循环 是我的php数组。我想操纵这个数组的偏移量,从0到1,1到2,2到3,3到4Php 数组的操作,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
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);