jochem
Goto Top

Wie in PHP ein array auslesen?

Moin zusammen,

ich versuche, Daten aus einer Datenbank in mehrere arrays (pro DB-Feld ein array) zu schreiben und die Werte dann spaltenweise auszugeben. Auslesen aus der DB und Füllen der arrays klappt. Für die Anzeige will ich 5 Spalten nebeneinander aufbereiten. Also lasse ich jedes array 5 mal durchlaufen um danach eine Zeile auszugeben. Hier habe ich mal den Codeschnipsel für eine Zeile, den Header einer Tabelle. Der Index $j bleibt auf 0 stehen und somit loopt das Script schon beim Füllen der ersten Zeile.
Wo mache ich den Denkfehler? Oder kann ich ein array nicht per While-Schleife ausgeben?
Bei "foreach" wäre dann das nächste Problem, da ich ja nicht alle array-Elemente ausgeben will, sondern nur immer 5er-Blöcke.
Alternativ könnte ich auch nur jeweils 5 Datensätze lesen, die arrays füllen und hätte damit das obige foreach-Problem wohl erschlagen, oder?
Wie würdet ihr das lösen?

echo '<thead>';  
echo '<tr>';  
echo '<th>Bezeichnung</th>';  
$j = 0;
while ($j < 5) {
echo '<th align="center" valign="middle">';  
echo $j.' '.$a_mdl[$j];  
echo '</th>';  
$j = $j++;
}
echo '</tr>';  
echo '</thead>';  

Gruß J face-smile chem

Content-Key: 227833

Url: https://administrator.de/contentid/227833

Printed on: April 25, 2024 at 21:04 o'clock

Member: colinardo
Solution colinardo Jan 27, 2014 updated at 11:07:38 (UTC)
Goto Top
machs doch so:
for ($j = 0 ; $j < 5; $j++){
  echo '<th align="center" valign="middle">';  
  echo $j.' '.$a_mdl[$j];  
  echo '</th>';  
}
p.s. der Fehler in deinem Script ist in Zeile 9, diese sollte nur so aussehen: (Erläuterung s. Kommentar weiter unten)
$j++
Grüße Uwe
Member: Jochem
Jochem Jan 27, 2014 at 10:48:19 (UTC)
Goto Top
Moin,

oh Mann, ich glaub es nicht. Nur das hochzählen des Index hats verwurschtelt. Danke. Läuft jetzt wie gewünscht.

Gruß J face-smile chem
Member: Arano
Arano Jan 27, 2014 at 10:48:43 (UTC)
Goto Top
Du Uwe...

Zeile 9 hatte ich eben auch im Verdacht... habs aber verworfen weil ich meine das es trotzdem funktionieren müsste...
Kannst du den Fehler bitte erklären.

Danke
~Arano
Member: colinardo
colinardo Jan 27, 2014, updated at Jan 30, 2014 at 07:45:59 (UTC)
Goto Top
Zitat von @Arano:
Zeile 9 hatte ich eben auch im Verdacht... habs aber verworfen weil ich meine das es trotzdem funktionieren müsste...
Kannst du den Fehler bitte erklären.
$j = $j++;
funktioniert so nicht weil die Variable erst nach der Ausführung der Code-Zeile ($j++) inkrementiert wird. So hängt sich PHP in eine unendliche Schleife weil die Variable immer null bleibt.
$j++ gibt selbst nichts den Operand zurück(Post-Increment). Siehe auch http://www.tizag.com/phpT/operators.php

Alternativen die gehen:
(man beachte die ++ vor der Variablen / Pre-Increment)
$j = ++$j;
$j += 1;
$j = $j + 1;
(Post-Increment)
$j++;
Member: Guenni
Guenni Jan 30, 2014 at 01:01:21 (UTC)
Goto Top
$j++ gibt selbst nichts zurück(Post-Increment).

Hi,

stimmt so auch nicht ganz.

Bei der Formulierung $op1 = $op2++ gibt der Operator ++ zuerst den Operand zurück,

und danach wird der Operand incrementiert.

<?php
$a = 5;
$b = 3;

echo $a."<br>";  

$a = $b++;

echo $a."<br>"; // $a ist jetzt 3  
echo $b."<br>"; // $b ist jetzt 4  
?>


Gruß
Günni