hawkmaster: Array leer, count() liefert trotzdem 1 ???

Hallo zusammen,

nur mal so zum Verständnis:
Folgender Code:

$result = $DBO->query("SELECT * FROM  design WHERE TestID='888' ");
$sqlvalues = $result->fetch(PDO::FETCH_ASSOC);
print_r($sqlvalues);
echo "<br><br>sqlvalues hat anzahl " .count($sqlvalues) . "<br>";

Die TestID 888 gibt es nicht. Folglich ist doch das Array "$sqlvalues" leer.

Die Ausgabe mit print_r() liefert auch nichts.

Trotzdem zeigt aber die nächste Echo Ausgabe mit "count($sqlvalues)" immer 1 an.

Ich dachte eigentlich das müsste 0 sein und wollte vergleichen mit;
if(count($sqlvalues) != 0){

Kann mir das jemand erklären?

vielen Dank und viele Grüße
hawk

  1. print_r($sqlvalues);
    echo "<br><br>sqlvalues hat anzahl " .count($sqlvalues) . "<br>";

    Die Ausgabe mit print_r() liefert auch nichts.

    Trotzdem zeigt aber die nächste Echo-Ausgabe mit "count($sqlvalues)" immer 1 an.

    Probiere mal var_dump() und wirf auf jeden Fall einen Blick in den Quelltext der Seite (oder liefere sie mit dem Typ text/plain aus), die HTML-Verwurstung verschluckt bisweilen unerwartet dieses oder jenes.

  2. echo $begrüßung;

    $sqlvalues = $result->fetch(PDO::FETCH_ASSOC);
    print_r($sqlvalues);
    Die Ausgabe mit print_r() liefert auch nichts.

    Wenn print_r() nichts liefert, hast du kein Array vorliegen, denn selbst bei einem leeren Array zeigte print_r() etwas an. Wenn ein fetch() keine weiteren Zeilen liefert, was ist dann der Rückgabewert? Ein leeres Array? Nein, ein false, und das ist 1 Wert. Das erwähnte var_dump() ist genauer in seinen Aussagen. Du hättest dann das "false" angezeigt bekommen.

    Ich dachte eigentlich das müsste 0 sein und wollte vergleichen mit;
    if(count($sqlvalues) != 0){

    Sowohl bei if (array()) (also ein leeres Array) als auch bei if (false) landest du im else-Zweig. Also: if ($sqlvalues) { ...

    echo "$verabschiedung $name";

    1. Hallo,
      vielen Dank für eure Hilfe und Tipps.
      Ja das war natürlich ein Denkfehler mit dem leeren Array.

      Ich werde mir das mal angewöhnen mit dem var_dump bei Problemen.

      Er lieferte übrigens:
      bool(false)

      wie du sagtest.

      vielen Dank nochmals.
      Gruss
      hawk