Martin Nessler: Arrays mit mehreren Ebenen - bekomme Fehlermeldung

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

  1. 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

    --
    Hast Du einen Beitrag? Nur her damit!
    http://aktuell.de.selfhtml.org/tippstricks/beitrag.htm
    SELF-Code: (http://emmanuel.dammerer.at/selfcode.html)
    sh:) fo:) ch:] rl:( br:> n4:& ie:% mo:) va:) de:] zu:) fl:( js:| ss:) ls:[
    1. Hi,

      dankeschön!

      Gruß Martin

    2. 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

      --
      Signatur oder nicht Signatur - das ist hier die Frage!
      1. 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

        --
        Hast Du einen Beitrag? Nur her damit!
        http://aktuell.de.selfhtml.org/tippstricks/beitrag.htm
        SELF-Code: (http://emmanuel.dammerer.at/selfcode.html)
        sh:) fo:) ch:] rl:( br:> n4:& ie:% mo:) va:) de:] zu:) fl:( js:| ss:) ls:[