Ich habe ein Array wie folgt aus:Wie überprüft man vor der Verwendung der Elemente des Arrays?
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
/*
Array
(
[0] => Array
(
[id] => 191
[name] => Ali
[range] => today
)
[1] => Array
(
[id] => 190
[name] => John
[range] => today
)
[2] => Array
(
[id] => 189
[name] => peter
[range] => in last week
)
[3] => Array
(
[id] => 180
[name] => Ali
[range] => in last week
)
[4] => Array
(
[id] => 170
[name] => Jack
[range] => in last week
)
)
*/
Und ich versuche, ein HTML dynamisch wie diese zu machen:
<div id = "notification_box">
<div class= "cases">
<div class="title">today</div>
<table>
<tr>
<td>191</td>
<td>Ali</td>
</tr>
<tr>
<td>190</td>
<td>John</td>
</tr>
</table>
</div>
<div class= "cases">
<div class="title">yesterday</div>
</div>
<div class= "cases">
<div class="title">in last week</div>
<table>
<tr>
<td>189</td>
<td>Peter</td>
</tr>
<tr>
<td>180</td>
<td>Ali</td>
</tr>
<tr>
<td>170</td>
<td>Jack</td>
</tr>
</table>
</div>
</div>
Hier ist mein Code:
$html = '';
$last_item_range = '';
foreach ($results as $key => $item)
{
$next_item = (is_array($results[$key+1])) ? $results[$key+1] : null;
if ($item['range'] != $last_item_range)
{
$html .= '<div class="cases">';
$html .= sprintf('<div class="title">%s</div>', $item['range']);
$html .= '<table>';
$last_item_range = $item['range'];
}
$html .= '<tr>';
foreach($item as $value){ $html .= sprintf('<td>%s</td>', $value); }
$html .= '</tr>';
if ($next_item['range'] != $item['range'])
{
$html .= '</table>';
$html .= '</div>';
}
}
echo $html;
Aber diese Linie $results[$key+1]
wirft diese Notiz:
Hinweis: undefiniert Offset
Wie kann ich es beheben?
Kannst du mir bitte auch sagen, dass ich das richtig mache? Oder gibt es einen besseren Algorithmus, um HTML zu erstellen?
Vielleicht mit 'isset ($ results [$ key + 1]' statt 'is_array ($ results [$ key + 1] ' –
@MarkBaker Gut gespielt .. Kannst du mir bitte auch sagen, dass ich das richtig mache? Oder sollte ich das anders machen? –
Ich bin mir ziemlich sicher, dass es eine bessere Möglichkeit gibt, die Anzahl der Spalten einzustellen pure css, aber ich bin kein Experte in css –