theresa: mehrdimensionales array ausgeben

hi leute!

ich nähere mich einem großen persönlichen erfolg.

kann mir jemand erklären wie ich ein mehrdimensionales arrays, dass ich hoffentlich richtig erstellt habe, ausgeben kann.

erstellung:
$akttermin = 1,2,3.....
$arra = 1,2,3.....
$array = array("$akttermin" => array("$arra" => "0"));

ausgabe:
echo $array[1][1];

natürlich erschient auf mienem bilschirm genau nichts...

mach ich was falsch?

danke,
eure theresa

  1. Hallo theresa,

    kann mir jemand erklären wie ich ein mehrdimensionales arrays, dass ich hoffentlich richtig erstellt habe, ausgeben kann.

    erstellung:
    $akttermin = 1,2,3.....
    $arra = 1,2,3.....
    $array = array("$akttermin" => array("$arra" => "0"));

    ausgabe:
    echo $array[1][1];

    natürlich erschient auf mienem bilschirm genau nichts...

    [x] Du suchst die Funktion print_r().

    Grüße

    Marc Reichelt || http://www.marcreichelt.de/

    --
    Linux is like a wigwam - no windows, no gates and an Apache inside!
    Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)
    http://emmanuel.dammerer.at/selfcode.html
    1. hi leute!

      mit print_r() kommt folgende ausgabe:
      Array ( [2] => Array ( [28] => 0 ) )

      was heisst das?

      theresa

      1. hi,

        mit print_r() kommt folgende ausgabe:
        Array ( [2] => Array ( [28] => 0 ) )

        was heisst das?

        Das ist die Struktu deines Arrays - die du jetzt eigentlich verstehen können solltest.

        Tipp: Schau in den Quelltext, oder setze ein <pre> darum - dann ist auch nicht alles in einer Zeile, sondern auch noch eingerückt.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. hi wahsaga!

          die ausgabe versteh ich schon, aber ich verstehe nicht warum
          ich nur eine zeile bekomme.

          ich suche einen weg, in einer schleife die einzelnen werte der jeweiligen arrays auszugeben.

          im sinne von:
          echo $array[1][1];
          echo $array[1][2];
          echo $array[1][3];
          .
          .
          .
          echo $array[1][28];

          echo $array[2][1];
          echo $array[2][2];
          echo $array[2][3];
          .
          .
          .
          echo $array[2][28];

          danke für einen rat,
          theresa

          1. Moin,

            die ausgabe versteh ich schon, aber ich verstehe nicht warum
            ich nur eine zeile bekomme.

            ich suche einen weg, in einer schleife die einzelnen werte der jeweiligen arrays auszugeben.

            schreib dir doch eine rekursive Funktion, die dir die Inhalte eines Arrays ausgibt und sich selbst aufruft, wenn der Inhalt ein array ist.

            MfG,
              Juan

            1. Moin nochmal,

              schreib dir doch eine rekursive Funktion, die dir die Inhalte eines Arrays ausgibt und sich selbst aufruft, wenn der Inhalt ein array ist.

              also im Prinzip sowas hier:
              function printArray($var){
               for ($i=0;$i<sizeof($var);$i++){
                if (!is_array($var[$i])){
                  echo $var[$i]."<br>";
                }
                else{
                printArray($var[$i]);
                }
               }
              }

              MfG,
               Juan

              1. hallo leute, hallo juan!

                ich danke für eure rege teilnahme, jedoch kann ich genau mit keinem von euren posts was anfangen.

                ich bin anfänger, bitte vergesst das nicht.
                ich weiß ja nichtmal was eine rekursive funktion ist...

                für euch ist es doch wohl ein leichtes die werte meines arrays auszugeben, oder?
                bitte helft mir doch mit einem code-beispiel, das kann ich lesen, verstehen und daraus lernen.

                danke juan für dein beispiel, leider gibt das bei mir genau
                nichts aus, weil die funktion printarray unbekannt ist...

                kann mir vielleicht jemand erklären, warum folgender code ebenfalls
                nichts ausgibt:

                for($x2=1; $x2<=2; $x2++)
                {
                 for($x=1; $x<=28; $x++)
                 {
                  print"$x:$x2-$x" . $array[$x2][$x] . "<br>";
                 }
                }

                danke!!!!!!!

                1. Moin,

                  danke juan für dein beispiel, leider gibt das bei mir genau
                  nichts aus, weil die funktion printarray unbekannt ist...

                  kopiere dir die Funktion printArray doch einfach von meinem Post und dann ist sie nicht mehr unbekannt :-)

                  Grüsse,
                    Juan

                  1. hi juan!

                    hmm, verstehe....
                    wie kann ich dann die funktion aufrufen?

                    danke,
                    theresa

                    1. Hallo,

                      hmm, verstehe....
                      wie kann ich dann die funktion aufrufen?

                      <?PHP
                      $array1 = array('a','b','c');
                      $array2 = array('d','e','f');
                      $array3 = array('1','2','3');
                      $array4 = array($array1,$array2,$array3);

                      function printArray($var){
                       foreach($var as $k){
                         if (!is_array($k)){
                            echo $k."<br>";
                          }
                          else{
                          printArray($k);
                        }
                       }
                      }
                      printArray($array4);
                      ?>

                      Das würde zu folgender Ausgabe führen:
                      a
                      b
                      c
                      d
                      e
                      f
                      1
                      2
                      3

                      Grüsse,
                        Juan

                2. Hallo Theresa,

                  benutze für PHP-Arrays nicht for(), sondern foreach()

                  PHP-Arrays sind keine Arrays im klassischen Sinne, sondern es sind verkettete Strukturen. Mehrdimensionale sind Baumstrukturen.

                  Das führt dazu, dass keine Polymorphie vorliegen muss, die bei einem klassischen Array aber die Grundlage darstellt. Es können also Indexe fehlen oder z.B. nicht in der erwarteten Reihenfolge vorliegen.

                  Foreach() läuft die Kette in der Verkettungsreihenfolge ab.

                  LG
                  Chris

                3. Hi,

                  ich bin anfänger, bitte vergesst das nicht.
                  ich weiß ja nichtmal was eine rekursive funktion ist...

                  nun denne, testen:

                  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
                          "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
                  <html>
                  <head>
                  </head>
                  <body>

                  <?php

                  $myArr = array(
                      "blah"  =>  array(
                                  0       => "lala",
                                  "xyz"   => "bebe",
                                  "urgs"  => array("hep", "hip")
                      ),
                      "haha"  =>  array(
                                  0       => "la",
                                  1       => "li",
                                  2       => "lu"
                      )
                  );

                  echo "Ausgabe print_r:<br><br><pre>";
                  print_r($myArr);
                  echo "</pre><br><br>";

                  // array ausgeben
                  function readOutArr($arr) {

                  // arraytiefe
                      static $i  =  0;
                      foreach($arr as $key => $val) {

                  if(is_array($val)) {
                              echo (str_repeat("&nbsp;&nbsp;&nbsp;", $i)) . $key . "  enth&auml;lt:<br>";
                              $i ++;
                              readOutArr($val);
                              $i --;
                          } else {
                              echo (str_repeat("&nbsp;&nbsp;&nbsp;", $i)) . $key . " = " . $val . "<br>";
                          }
                      }
                  }

                  readOutArr($myArr);

                  ?>

                  </body>
                  </html>

                  Gruesse, Joachim

                  --
                  Am Ende wird alles gut.
                  1. hi joachim!

                    danke, danke, danke!
                    ich versteh schon langsam, worum es geht...

                    aber mir ist nicht klar, was ich dann beim bauen meines arrays falsch mache (while läuft zweimal durch):

                    $akttermin = 1;
                     while ($row = mysql_fetch_array($result))
                     {
                      $kid = $row["kid"];
                      $bh = $row["bh"];
                      $eh = $row["eh"];
                      $bm = $row["bm"];
                      $em = $row["em"];
                      $t_array = array("$akttermin" => array("1" => "$kid"));
                      $akth = 8;
                      $arra = 1;
                      for($g=1; $g<=14; $g++)
                      {
                       if ($akth <= $eh && $akth >= $bh)
                       {
                        if ($akth == $eh && $em == "1")
                        {
                         print "g: $g | akth: $akth | arra: $arra | halbe-YES | weil: $akth <= $eh && $akth >= $bh | array: array-$akttermin-$arra<br>";
                         $array = array("$akttermin" => array("$arra" => "1"));
                         $arra = $arra+1;
                         print "g: $g | akth: $akth | arra: $arra | volle-NO | weil: $akth <= $eh && $akth >= $bh | array: array-$akttermin-$arra<br>";
                         $array = array("$akttermin" => array("$arra" => "0"));
                         $arra = $arra+1;
                        }
                        else
                         {
                          print "g: $g | akth: $akth | arra: $arra | halbe-YES | weil: $akth <= $eh && $akth >= $bh | array: array-$akttermin-$arra<br>";
                          $array = array("$akttermin" => array("$arra" => "1"));
                          $arra = $arra+1;
                          print "g: $g | akth: $akth | arra: $arra | volle-YES | weil: $akth <= $eh && $akth >= $bh | array: array-$akttermin-$arra<br>";
                          $array = array("$akttermin" => array("$arra" => "1"));
                          $arra = $arra+1;
                         }
                       }
                       else
                       {
                        print "g: $g | akth: $akth | arra: $arra | halbe-NO | array: array-$akttermin-$arra<br>";
                        $array = array("$akttermin" => array("$arra" => "0"));
                        $arra = $arra+1;
                        print "g: $g | akth: $akth | arra: $arra | volle-NO | array: array-$akttermin-$arra<br>";
                        $array = array("$akttermin" => array("$arra" => "0"));
                        $arra = $arra+1;
                       }
                       $akth = $akth+1;
                      }
                      $akttermin = $akttermin+1;
                     }

                    überschreib ich irgendwas, oder muss ich indizies angeben? ich verstehs einfach nicht...

                    :(((

            2. Hallo,

              schreib dir doch eine rekursive Funktion, die dir die Inhalte eines Arrays ausgibt und sich selbst aufruft, wenn der Inhalt ein array ist.

              Ich glaube, dass eine rekursive Funktion hier nicht in Theresas Interesse sein kann, sondern eine dedizierte Funktion besser wäre.

              Die gewünschte Datenstruktur muss sie ohnehin vorher festlegen, und bei der Ausgabe kann sie sie auch gleich überprüfen.

              Um also eine Datenstruktur gezielt ausgeben zu können, muss man sie erst einmal beschreiben. Was soll wo stehen?

              LG
              Chris

            3. Hi,

              schreib dir doch eine rekursive Funktion

              ich bin ziemlich sicher, dass jemandem, der print_r nicht versteht, mit dieser Aussage echt geholfen wurde.

              Gruesse, Joachim

              --
              Am Ende wird alles gut.
  2. Hi,

    kann mir jemand erklären wie ich ein mehrdimensionales arrays, dass ich hoffentlich richtig erstellt habe, ausgeben kann.

    vielleicht mit  print_r($arr) ?

    Gruesse, Joachim

    --
    Am Ende wird alles gut.