2017-05-24 3 views
2

この問題は何度か取り組まれていましたが、すべてのスレッドを注意深く読んだのですが、私の問題の解決策を見つけることができました。ここでPHP foreachは、空の時に01-01-1970を返します。

は、空の1970年1月1日を返されるコードです:

$candidateid = '{gprh_fabrik_user_enrollment___id}'; 
    $db = JFactory::getDbo(); 
    $query = $db->getQuery(true); 
    $query ->select (array('gprh_fabrik_user_training_124_repeat.date_exa_2')) ->from('gprh_fabrik_user_enrollment') ->leftJoin('gprh_fabrik_user_enrollment_repeat_choix_formation ON gprh_fabrik_user_enrollment.id = gprh_fabrik_user_enrollment_repeat_choix_formation.parent_id') ->leftJoin('gprh_fabrik_user_training_124_repeat ON gprh_fabrik_user_enrollment_repeat_choix_formation.choix_formation = gprh_fabrik_user_training_124_repeat.id') ->leftJoin('gprh_fabrik_user_training ON gprh_fabrik_user_training_124_repeat.parent_id = gprh_fabrik_user_training.id') ->having('gprh_fabrik_user_enrollment.id = ' .   $db->quote($candidateid)) ->group('gprh_fabrik_user_enrollment.id, gprh_fabrik_user_training_124_repeat.date_exa_2'); 
    $db->setQuery($query); 
    $row = $db->loadObjectList(); 
    foreach ($row as $item) { return date('d-m-Y', strtotime($item->date_exa_2)); }; 

はここにいくつかの助けをお願い申し上げます。前もって感謝します。乾杯、マルク・

+1

'のstrtotime($アイテム - > date_exa_2)に渡す前に、空ではないことを確認する必要がありますstrtotime.php)と 'date()'はこれを整数 '0'とみなします。ダブルチェック '$ item-> date_exa_2' – castis

答えて

0

を試してみてください。あなただけのhttp://php.net/manual/en/function([falseを返している]。 `$item->date_exa_2strtotime()

foreach($row as $item) { 
    return (!empty($item->date_exa_2)) ? date('d-m-Y', strtotime($item->date_exa_2)) : ''; 
} 
+0

こんにちはライアンはあなたの修正に感謝し、それは魅力のように動作しているので、あなたの時間、歓声、マークのために、完璧な、感謝 PS:トマスの回答もうまくいきます – marcq

+0

これはなぜ機能するのですか?フィールドが空の場合、strtotimeは、unixのタイムスタンプで、strtotimeはその偽(ゼロ)とゼロが1-1-1970に等しいと考えます。 –

-1

日付機能:

日( 'フォーマット'、 'タイムスタンプ');

タイムスタンプは1970年1月1日のUnixエポックから始まるカウントです。したがって、タイムスタンプは特定の日付とUnixエポックの間の秒数です。

$ item-> date_exa_2が空の場合、strtotime($ item-> date_exa_2)は0(Unix Epochから0秒)を返し、date関数は01-01-1970を返します。

これはそれを修正します。この

foreach ($row as $item){ 
    $time = strtotime($item->date_exa_2); 
    if($time){ 
     return date('d-m-Y', $time); 
    }else{ 
     return ''; 
    } 
}; 
+0

こんにちはトーマス、完璧に働いているあなたの答えにも感謝します。私はRyanコードを減らしてから選んでいます。とにかくお時間をありがとう、歓声、マーク – marcq

関連する問題