2016-05-08 3 views
0

Я пытаюсь построить массив, но если одна дата равна NULL, значение переходит к 1/1/1970.Удалить или изменить нулевые данные массива

У меня есть код:

$date1 = $row['date_initial']; 
    $date2 = $row['date_end']; 
    $value = $row['value']; 


    $data1 = array(strtotime($date1)*1000,$value); 
    $data2 = array(strtotime($date2)*1000,$value); 

    $data8[] = array($data1,$data2); 

    echo json_encode($data8); 

Я получаю этот массив:

[[[1456531200000 "- 12"], [1456704000000 "- 12"]], [[1456531200000 "- 16"], [0, "- 16"]], [[1456617600000 "- 13"], [1456790400000 "- 13"]], [[1456704000000 "- 14"], [0, "-14"]]]

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

Я доказал:

$data8 = array_map('array_filter', $data8); 
    $data8 = array_filter($data8); 

, но он не работает в этом случае ...

+0

Unset ($ array [0]); не уверен, что он работает, хотя – Andreas

ответ

3

теста это пока INIT

if(! ($data1 = strtotime($date1))) $data1 = time(); 
$data1 = array($date1*1000,$value); 
+0

Сначала я видел его как комментарий, затем он удалился, и я был немного удивлен, поскольку это простое и правильное решение. – Andreas

+0

Я ошибся в своем комментарии. Решение требует двух утверждений :) – splash58

+0

В любом случае, это все еще решение, достойное upvote – Andreas

0

Вы можете заменить 0 временные метки с сегодняшней (середины 0)

$today = strtotime(date('Y-m-d')) * 1000; // convert to milliseconds 
foreach($data8 as &$period) { 
    if(!$period[0][0]) $period[0][0] = $today; 
    if(!$period[1][0]) $period[1][0] = $today; 
} 
Смежные вопросы