Array leer, count() liefert trotzdem 1 ???
hawkmaster
- php
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
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.
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";
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