2015-11-30 2 views
1

Из этого кода:Php A Non хорошо сформированы числовое значение встречается

$kw = CalenderWeekHelper::getCalenderWeek($currentYear); 
if(isset($_POST['generate'])) { 
    for($i = 0; $i < 52; $i++) { 
     foreach($users as $user) { 

      if ($i > 52) { 
       break; 
      } 
      $start = $kw[$i]['start']; 
      $end = $kw[$i]['end']; 

      $startCon = date('Y-m-d', $start); 
      $endCon = date('Y-m-d', $end); 
     } 
    } 
} 

Вспомогательный класс:

class CalenderWeekHelper { 

    public static function getCalenderWeek($year) 
    { 
     for ($i=0; $i <= 52; $i++) 
     { 
      $week = sprintf('%02s', $i); 
     $from = date("Y-m-d", strtotime("{$year}W{$week}")); # d.m.Y 
      $to = date("Y-m-d", strtotime("{$year}W{$week} +6 days")); 
      $weekArray[$i] = array('start' => $from, 'end' => $to); 

     } 
     return $weekArray; 
    } 
} 

я получил:

Извещение: A Non хорошо сформированного числового значения встречаются в ... линия:

Что указывает на эти строки:

$startCon = date('Y-m-d', $start); 
$endCon = date('Y-m-d', $end); 

EDIT: var_dump ($ квт) печатает следующее:

array (size=53) 

     0 => 
     array (size=2) 
      'start' => string '1970-01-01' (length=10) 
      'end' => string '1970-01-01' (length=10) 
     1 => 
     array (size=2) 
      'start' => string '2014-12-29' (length=10) 
      'end' => string '2015-01-04' (length=10) 
     2 => 
     array (size=2) 
      'start' => string '2015-01-05' (length=10) 
      'end' => string '2015-01-11' (length=10) 
     3 => 
     array (size=2) 
      'start' => string '2015-01-12' (length=10) 
      'end' => string '2015-01-18' (length=10) 
     4 => 
     array (size=2) 
      'start' => string '2015-01-19' (length=10) 
      'end' => string '2015-01-25' (length=10) 
     5 => 
     array (size=2) 
      'start' => string '2015-01-26' (length=10) 
      'end' => string '2015-02-01' (length=10) 
     6 => 
     array (size=2) 
      'start' => string '2015-02-02' (length=10) 
      'end' => string '2015-02-08' (length=10) 
     7 => 
     array (size=2) 
      'start' => string '2015-02-09' (length=10) 
      'end' => string '2015-02-15' (length=10) 
     8 => 
     array (size=2) 
      'start' => string '2015-02-16' (length=10) 
      'end' => string '2015-02-22' (length=10) 
     9 => 
     array (size=2) 
      'start' => string '2015-02-23' (length=10) 
      'end' => string '2015-03-01' (length=10) 
     10 => 
     array (size=2) 
      'start' => string '2015-03-02' (length=10) 
      'end' => string '2015-03-08' (length=10) 
     11 => 
     array (size=2) 
      'start' => string '2015-03-09' (length=10) 
      'end' => string '2015-03-15' (length=10) 
     12 => 
     array (size=2) 
      'start' => string '2015-03-16' (length=10) 
     'end' => string '2015-03-22' (length=10) 

Кто-нибудь знает решение?

+0

Что такое '$ kw [$ i] ['start']' и '$ kw [$ i] ['start']' содержать? – Lino

+0

'date()' принимает в качестве второго аргумента временную метку unix. Каковы значения в '$ start' и' $ end'? – samlev

+0

вы можете «var_dump ($ kw)» и показать нам результат? – Lino

ответ

1

date() функция только принимает отметку времени unix.

В коде, у вас есть два варианта:

1: Используйте $start и $end непосредственно, так как они уже хорошо отформатирован:

$startCon = $start; 
$endCon = $end; 

2: Включите $start и $end в метку времени UNIX с strtotime():

$startCon = date('Y-m-d', strtotime($start)); 
$endCon = date('Y-m-d', strtotime($end)); 

Если вы хотите изменить формат, используйте себе cond один. Если нет, используйте первый.

Смежные вопросы