Leere Felddimension bei print_r

Hallo zusammen,

ich habe Datenbankabfrage gemacht mit

$db=$mysqli->query("SELECT…)

Diese habe ich dann in ein Array eingelesen per

while($dbdaten[]=$db->fetch_array())
{
}

Wenn ich nun diese Daten per

print_r($dbdaten)

ausgeben lasse.

Wird ein zweidimensionales Array ausgegeben wie folgt ausgegeben

Array ( [0] => Array ( [0] … ) [1] => Array ( [0] … ) [2] => Array ( [0] … ) [3] => Array ( [0] …) [6] => )

Nur mich wundert, warum das Feld [0][6] noch angezeigt wird, wenn diese doch leer ist.

Wie kann das sein?

Hi,

Nur mich wundert, warum das Feld [0][6] noch angezeigt wird,
wenn diese doch leer ist.

wieso wunder Dich, dass diese Funktion wie auch var_dump sämtliche Variablen unabhängig vom Inhalt ausgibt?

Gruß
Ingo

Moin,

Nur mich wundert, warum das Feld [0][6] noch angezeigt wird,
wenn diese doch leer ist.

Wie kann das sein?

Das liegt daran, dass es ein Unterschied ist, ob eine Variable nicht belegt oder leer ist.

Grüße,
-Efchen

Hallo und danke für die Antwort efchen!

Die Variable ist also belegt oder anders gesagt gesetzt, wenn auch leer. Deshalb wird das Feld [0][6] angezeigt. Interesse halber… Warum wird dieses Feld gesetzt, wenn doch kein Inhalt mehr folgt?

Gruß

Hallo

Hallo zusammen,

ich habe Datenbankabfrage gemacht mit

$db=$mysqli->query("SELECT…)

Diese habe ich dann in ein Array eingelesen per

hier ist dein problem
du nutz fetch array und das auf ein array

while($dbdaten[]=$db->fetch_array())
{
}

Wenn ich nun diese Daten per

print_r($dbdaten)

ausgeben lasse.

Wird ein zweidimensionales Array ausgegeben wie folgt
ausgegeben

Array ( [0] => Array ( [0] … ) [1] => Array ( [0] … )
[2] => Array ( [0] … ) [3] => Array ( [0] …) [6] => )

das ergibt wohl einen leeren datensatz while bricht dann ab hat aber wohl bei dbdaten schon das [] ausgeführt

das würde den leeren erklären

übrigens geht es auch anders :
function getArraySQL($sql,&$dbs) {
$aEntry = array();
// $sql = mb_convert_encoding($sql, ‚UTF-8‘);
if ( !$res=mysql_query($sql,$dbs[„dbi“])) {
echo "Error -> ".$sql;
exit;
}
while ($row = mysql_fetch_array($res,MYSQL_ASSOC)) {
array_push($aEntry,$row);
}
return $aEntry;
}

guck dir mal damit das ergebnis an :smile:
bestimmt ist dann der letzte eintrag nicht leer

Nur mich wundert, warum das Feld [0][6] noch angezeigt wird,
wenn diese doch leer ist.

Wie kann das sein?

Moin,

Interesse
halber… Warum wird dieses Feld gesetzt, wenn doch kein
Inhalt mehr folgt?

Ich kenne Deinen Code nicht. Wenn Du den Wert setzt, dann existiert die Variable. Setzen mit leerem Inhalt ist halt auch ein Setzen. Kann ein immenser Unterschied sein, ob etwas nicht existiert, oder ob es keinen Inhalt hat.
Wenn bei Regen Dein Keller voll läuft, dann bist Du auch froh, wenn ein leerer Eimer existiert, denn dann kannst Du Schaufeln. Wenn der Eimer nicht existiert, musst Du Dich mit dem Wasser arrangieren :smile:

Liebe Grüße,
-Efchen

Dankeschön
Hallo!

Danke für Eure Antworten. @Efchen: Genial erklärt! @TechPech: Danke für den Code

Gruß