Arrays mit mehreren Ebenen - bekomme Fehlermeldung
Martin Nessler
- php
Moin Leute,
Ich bastle gerade an meine Board rum und verwende folgende Routine um alle Threads in ein Array zu speichern:
while($threaddata=mysql_fetch_array($doselectthreads))
{
$listthreads[sizeof($listthreads)+1]=$threaddata;
}
Damit ergibt sich bei "$listthreads[$i]" ein Array mit zwei Ebenen, weil "$threaddata" ja auch ein Array ist.
Nun möchte ich "$listthreads[$i]" verwenden:
foreach ($listthreads as $i)
{
print $listthreads[$i]['titel'].'<br>';
}
Ich bekomme diese Fehlermeldung:
Warning: Illegal offset type in funktionen.php on line 333
Weiß jemand wie ich die Ebenen des Arrays in der Form ausgeben kann?
($listthreads[$i['titel']] und $listthreads[['titel']$i] habe ich schon versucht)
Danke,
Martin
Hallo Martin,
while($threaddata=mysql_fetch_array($doselectthreads))
{
$listthreads[sizeof($listthreads)+1]=$threaddata;
}
Unelegant; eleganter:
$listthreads = array ();
while($threaddata=mysql_fetch_array($doselectthreads))
{
$listthreads[]=$threaddata;
}
Nun möchte ich "$listthreads[$i]" verwenden:
foreach ($listthreads as $i)
{
print $listthreads[$i]['titel'].'<br>';
}
Foreach liefert Dir gleich den Wert:
foreach ($listthreads as $i)
{
print $i['titel'].'<br>';
}
Alternativ:
for ($i = 0; $i < count ($listthreads); $i++) {
print $listthreads[$i]['titel'].'<br>';
}
Alternativ:
foreach ($listthreads as $i => $dummy) {
print $listthreads[$i]['titel'].'<br>';
}
Alternativ:
foreach (array_keys ($listthreads) as $i) {
print $listthreads[$i]['titel'].'<br>';
}
Alternativ
while ($i = each ($listthreads)) {
print $listthreads[$i['key']]['titel'].'<br>';
}
Alternativ:
while (list ($i) = each ($listthreads)) {
print $listthreads[$i]['titel'].'<br>';
}
Alternativ:
while (list ($tmp, $i) = each ($listthreads)) {
print $i['titel'].'<br>';
}
Die Qual der Wahl... ;-)
Viele Grüße,
Christian
Hi,
dankeschön!
Gruß Martin
Moin!
while($threaddata=mysql_fetch_array($doselectthreads))
{
$listthreads[sizeof($listthreads)+1]=$threaddata;
}Unelegant; eleganter:
$listthreads = array ();
while($threaddata=mysql_fetch_array($doselectthreads))
{
$listthreads[]=$threaddata;
}
Unelegant; eleganter:
$listthreads = array();
while ($listthreads[]=mysql_fetch_array($doselectthreads))
{}
Obwohl vermutlich mysql_fetch_assoc() hier noch schöner, weil datensparender wäre. Ein kurzes var_dump() würde den Beweis antreten.
- Sven Rautenberg
Hallo Sven,
Unelegant; eleganter:
$listthreads = array();
while ($listthreads[]=mysql_fetch_array($doselectthreads))
{}
Allerdings liefert das ein unterschiedliches Ergebnis; denn Du weist ja ganz am Ende auch noch ein false an das Array zu.
Bei meiner Methode sähe das Array so aus:
array (
0 => [Zeile 1 rausgekürzt],
1 => [Zeile 2 rausgekürzt],
2 => [Zeile 3 rausgekürzt]
);
Bei Deiner Methode sähe das Array so aus:
array (
0 => [Zeile 1 rausgekürzt],
1 => [Zeile 2 rausgekürzt],
2 => [Zeile 3 rausgekürzt],
3 => false
);
Viele Grüße,
Christian