2016-03-16 3 views
-3

Я хочу, чтобы хранить эти значения в массивеКак можно динамически генерировать некоторые значения в php?

$hours = array("06:00", "06:15", "06:30"....etc); 

Последнее значение 23:45

Я хочу его хранить в порядке возрастания.

Мой вопрос ... как я могу автоматически генерировать эти значения и добавлять их в массив?

Если вы их вручную добавите ... их много, и это плохо.

Вы скажите мне, пожалуйста, способ, с помощью которого я мог бы динамически генерировать эти значения?

Заранее благодарен!

+1

Я использую MS Excel для таких вещей –

+0

и читать данные там? Я хотел бы знать, функцию для заполнения массива со значениями непосредственно .. так что легче –

+2

Покажите нам, что вы пытались – Epodax

ответ

2

Один из способов заключается в следующем:

$hours = array(6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23); 
$minutes = array('00','15','30','45'); 

$result_array = array(); 

foreach($hours as $h){ 
    foreach($minutes as $m){ 
     $val = str_pad($h,2,'0',STR_PAD_LEFT) . ':' . $m; 
     $result_array[] = $val; 
    } 
} 

var_dump($result_array); 

LIVE EXAMPLE

1

Используйте два для петель. Внешняя начинается с 6 до 23. Внутренняя начинается с 0 до 45 с шагом 15. Присоедините оба:. Проблема решена

0

Давайте дикие!

$date = \DateTime::createFromFormat('H:i', '06:00'); 
$stop_date = \DateTime::createFromFormat('H:i', '23:45'); 

$result = []; 
do { 
    $result[] = $date->format('H:i'); 
    $date->modify('+15 minutes'); 
} while($date <= $stop_date); 

var_dump($result); 
0
<?php 
$timeArray=array(); 
for($i=6; $i <=23; $i++) 
{ 
    for($j=0; $j<=45; $j++) 
    { 
     $timeArray[]= $i.':'.$j; 
     $j= $j+14; 
    } 
} 
echo "<pre>"; print_r($timeArray); 
?> 

Это будет выход

Array 
(
    [0] => 6:0 
    [1] => 6:15 
    [2] => 6:30 
    [3] => 6:45 
    [4] => 7:0 
    [5] => 7:15 
    [6] => 7:30 
    [7] => 7:45 
    [8] => 8:0 
    [9] => 8:15 
    [10] => 8:30 
    [11] => 8:45 
    [12] => 9:0 
    [13] => 9:15 
    [14] => 9:30 
    [15] => 9:45 
    [16] => 10:0 
    [17] => 10:15 
    [18] => 10:30 
    [19] => 10:45 
    [20] => 11:0 
    [21] => 11:15 
    [22] => 11:30 
    [23] => 11:45 
    [24] => 12:0 
    [25] => 12:15 
    [26] => 12:30 
    [27] => 12:45 
    [28] => 13:0 
    [29] => 13:15 
    [30] => 13:30 
    [31] => 13:45 
    [32] => 14:0 
    [33] => 14:15 
    [34] => 14:30 
    [35] => 14:45 
    [36] => 15:0 
    [37] => 15:15 
    [38] => 15:30 
    [39] => 15:45 
    [40] => 16:0 
    [41] => 16:15 
    [42] => 16:30 
    [43] => 16:45 
    [44] => 17:0 
    [45] => 17:15 
    [46] => 17:30 
    [47] => 17:45 
    [48] => 18:0 
    [49] => 18:15 
    [50] => 18:30 
    [51] => 18:45 
    [52] => 19:0 
    [53] => 19:15 
    [54] => 19:30 
    [55] => 19:45 
    [56] => 20:0 
    [57] => 20:15 
    [58] => 20:30 
    [59] => 20:45 
    [60] => 21:0 
    [61] => 21:15 
    [62] => 21:30 
    [63] => 21:45 
    [64] => 22:0 
    [65] => 22:15 
    [66] => 22:30 
    [67] => 22:45 
    [68] => 23:0 
    [69] => 23:15 
    [70] => 23:30 
    [71] => 23:45 
) 
0

Поскольку вы не явно указать в вашем вопросе, я предполагаю, что вы хотите создать часы и минуты.

Простой способ сделать это - сгенерировать значения как количество минут с полуночи ('06: 00 'равно 60 * 6, '23: 45' равно 23 * 60 + 45), а затем форматировать каждое значение как " час: минута»с помощью 2-значных номеров осталась проложенная с 0:

$list = array_map(
    // format the values as hour:minute (2-digits, left padded with 0) 
    function ($item) { 
     $min = $item % 60; $hour = ($item - $min)/60; 
     return sprintf('%02d:%02d', $hour, $min); 
    }, 
    // generate the list of values as number of minutes since midnight 
    range(6 * 60, 24 * 60 - 15, 15) 
); 

Другим способом сделать это состоит в использовании DateTime объектов:

$start = new DateTime('06:00'); 
$end = new DateTime('23:45'); 
$step = new DateInterval('PT15M'); 

$list = array(); 
for ($date = $start; $date <= $end; $date->add($step)) { 
    $list[] = $date->format('H:i'); 
} 

Пожалуйста, обратите внимание, что этот подход может потерпеть неудачу, если он работает на день, когда начинается или заканчивается летнее время. Это можно легко исправить, добавив в день, когда DST не меняется точно в строк, используемых для инициализации $start и $end:

$start = new DateTime('2016-01-01 06:00'); 
$end = new DateTime('2016-01-01 23:45'); 
0

Эта функция основана на Отметка времени Unix, но возвращает время в 24-часовом формате аккуратно.

function findtime($start,$end,$interval = '15 minutes'){ 
    $time = array(date('H:i',$start)); //Init array and first value 
    $last = $start; 


    while($last < $end){ //Loops until we reach the end value 
     $last = strtotime('+' . $interval,$last); //Generates the next value 
     $time[] = date('H:i',$last); //Store the new value in the desired format 
    } 

    return $time; 
} 
Смежные вопросы