Создать массив / коллекцию / список (Дата, Значение) в PHP - PullRequest
0 голосов
/ 04 февраля 2011

Я пишу PHP-скрипт, в котором вводятся следующие данные:

From date
To date

Затем я хочу взять этот диапазон дат и создать массив некоторого вида, который имеет:

Array(date,x)

Когда я добавляю каждую дату в массив, я вычисляю значение, которое соответствует ей.

С .NET я бы (вне головы) использовал словарь, в котором дата была ключом, а x - этозначение.

Основная задача - получить этот диапазон дат, а затем разбить его на массив или словарь (что было бы идеально в php)

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

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

Ответы [ 3 ]

6 голосов
/ 04 февраля 2011

(не проверено)

function dateArray($from, $to, $value = NULL) {
    $begin = new DateTime($from);
    $end = new DateTime($to);
    $interval = DateInterval::createFromDateString('1 day');
    $days = new DatePeriod($begin, $interval, $end);

    $baseArray = array();
    foreach ($days as $day) {
        $dateKey = $day->format("Y-m-d");
        $baseArray[$dateKey] = $value;
    }

    return $baseArray;
}

$datesArray = dateArray('2011-01-01', '2011-03-31',true);
1 голос
/ 04 февраля 2011

Вы можете попробовать это

function makeDateRange($from,$to,$pattern='m-d-y') { $day = date( $pattern , $from ); $to = date( $pattern , $to ); $parseDate = date_parse($from); while( $day <= $to ) { $day = mktime(0,0,0,$parseDate["month"],$parseDate["day"]+1,$parseDate["year"]); $dateArray[] = date($pattern , $day); } return $dateArray; }</p> <p>// here make array $keys = makeDateRange("12-01-11","12-02-11");</p> <p>//here make above array as key in $a array $a = array_fill_keys($keys, 'none'); print_r($a);</p> <p>

1 голос
/ 04 февраля 2011

Если я вас правильно понимаю, вы можете использовать для этого ассоциативный массив:

array(
  '00-00-00' => $value,
  '01-01-01' => $value,
  // etc...
);

Или вы можете создать его так:

$myArray = array();
$myArray['00-00-00'] = $value;
$myArray['01-01-01'] = $value;

Вы можете заполнить их, запустив цикл ...

...