2016-07-14 9 views
2

したがって、SQLクエリ結果がarrayにロードされています。今、私はhtmlテーブルにそれを表示したいと思います。これは私が以前使用していたコードです。DateTimeのPHPコードを準備する

$table = "<table><thead><tr><th>".implode('</th><th>', array_keys(current($res)))."</th></tr></thead><tbody>"; 
for($i = 0; $i < count($res); ++$i) { 
    $table .= "<tr>"; 
    for($j = 0; $j < count($res[$i]); ++$j) { 
     $table .= "<td>".$res[$i][$j]."</td>"; //here is the issue if it's date 
    } 
    $table .= "</tr>"; 
} 
$table .= "</tbody></table>"; 
echo $table; 

一定の値がDateまたはDateTimeその後、私はエラーCatchable fatal error: Object of class DateTime could not be converted to stringを取得している場合。

まったく同じエラーが発生する次のステップがあります。なぜ私は本当に理解していない。

したがって、どのレコードがどのような型を持っているかを事前に知ることができないクエリ結果に対して一般的な関数を記述したいとしましょう。日付を処理するコードを準備するにはどうすればよいですか?

+1

あなたは日付を持っているかどうかをチェックし、別の方法でそれを処理するために 'if($ res [$ i] [$ j] instanceof DateTime)'を使用できます。 –

答えて

2

あなたは、あなたがしたいように例外をキャッチするために、独自のエラーハンドラを書くことができますのis_a機能を使用して、日付時刻オブジェクトかどうかを確認し、それを

if (is_a($res[$i][$j], 'DateTime')) { 
// handle code 
} 
1

を扱うことができます。

function errorHandler($errno, $errstr, $errfile, $errline) { 
    if (E_RECOVERABLE_ERROR===$errno) { 
     echo "'catched' catchable fatal error\n"; 
     throw new Exception(); 
    } 
    return false; 
} 
set_error_handler('errorHandler'); 


$t = new DateTime(); 
try{ 
    $table = "<td>".$t."</td>"; 
}catch(Exception $e){ 
    $table = "<td>".$t->format("Y-m-d H:i:s")."</td>"; 
} 

echo $table; 

このようにして、例外がスローされます。それは出力するでしょう

'catched' catchable fatal error 
<td>2016-07-14 12:57:27</td>%