Rolf b: Array mit in_array vergleichen

Beitrag lesen

Hey Leute - ihr sitzt da einem Irrtum auf. $daten ist kein wirkliches Array, sondern ein als Array realisiertes Objekt. Deswegen sind Suchfunktionen wie in_array oder array_filter hier nicht richtig.

Falls Du prüfen willst, ob $daten den Schlüssel 'zeit' überhaupt enthält, machst Du das mit array_key_exists('zeit', $daten). Wenn Du wissen willst, ob $daten['zeit'] einen bestimmten Wert enthält, dann vergleiche einfach. Wenn Du beides wissen willst, nagut, dann mach beides 😉

Ob Du die Zeit mit == oder === vergleichst (Werte-Gleichheit oder Werte-Identität) hängt von deinen Daten ab. Wenn Du die internen Typangleichungen (siehe hier und hier) brauchst, die PHP bei == durchführt, dann nimm ==, sonst nimm ===.

if ($daten['zeit'] == $time) {
   $html .= '<tr>
  <td style="text-align: center;">' . $time . '</td>
  <td>' . $daten['person'] . '</td>
  <td>' . $daten['bereich'] . '</td>
</tr>';
}

Statt Stringverkettung kannst Du auch die HEREDOC Syntax verwenden, du musst nur die Array-Zugriffe als complex syntax (in geschweifte Klammern eingeschlossen) notieren. Vorteil von HereDoc: Du kannst Apostrophe und Anführungszeichen gleichermaßen verwenden, und du musst nicht aufpassen, dass Du alle Stringfragmente korrekt in ' oder " einschließt. Die Zeilenumbrüche hinter <<<XXX und vor XXX; werden nicht in den String übernommen.

if ($daten['zeit'] == $time) {
   $html .= <<<XXX
<tr>
  <td style="text-align: center;">$time</td>
  <td>{$daten['person']}</td>
  <td>{$daten['bereich']}</td>
</tr>
XXX;
}

Rolf