Манипулирование массивом

Я потратил так много времени, пытаясь понять, как создать цикл.
мой массив в 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
)
.....
)

-2

Решение

у нас с Фрай был такой же подход, я просто предпочитаю foreach()

<?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);
0

Другие решения

Ты можешь использовать for или же foreach перебирать позиции индекса по датам и увеличивать текущий индекс на единицу, чтобы получить нужный end_date, Повторите итерацию до конца массива или end_date не определено.

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

Результат: https://3v4l.org/5sSjs

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)
}
}

Если вам нужно проверить положение даты, дайте мне знать, и я продемонстрирую метод, основанный на проверке, для заполнения массива.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector