Ankündigung

Einklappen
Keine Ankündigung bisher.

Problem bei Ausgabe eines Arrays

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Problem bei Ausgabe eines Arrays

    Hallo,

    ich schaffe es nicht das nachfolgende verschachtelte Array aufgesplittet nach Jahreszahl, Name und Text auszugeben.
    PHP-Code:
      Array (     [0] => Array         (             [0] => 1898             [1] => Henry Moore             [2] => (in Castlefordenglischer Bildhauer und GrafikerZählt zu den bedeutendsten Künstlern der Klassischen Moderne. + 31.08.1986 in Much Hadham.          )      [1] => Array         (             [0] => 1886             [1] => Alfred Weber             [2] => (in Erfurtdeutscher Nationalökonom und SoziologeDer Begründer der "verstehenden" Soziologie entwickelt eine multikausalehistorisch-soziale Kulturtheorie. + 02.05.1958 in Heidelberg.          )      [2] => Array         (             [0] => 1863             [1] => Henry Ford             [2] => (in Dearborn/MichiganUS-amerikanischer UnternehmerKonstruiert 1892 seinen ersten Motorwagen und gründet 1903 die Ford AutomobilwerkeFührt 1912 als erster Hersteller die Fließbandfertigung ein. + 07.04.1947 in Detroit.          )      [3] => Array         (             [0] => 1814             [1] => Johann Georg Halske             [2] => (in Hamburgdeutscher Elektrotechniker und UnternehmerGründet mit Werner Siemens 1847 die "Telegraphen-Bauanstalt von Siemens & Halske" in Berlin. + 18.03.1890 in Berlin.          )  ) 
    Der erste EIntrag (Array 0) sollte so aussehen:

    1898 Henry Moore
    (in Castleford) englischer Bildhauer und Grafiker. Zählt zu ....


    Mein Codeversuch:
    PHP-Code:
    $row $db->loadRowList();
    echo 
    "<pre>";
    print_r($row);


    foreach( 
    $row as $test ) {
        echo 
    $test->jahr;
        echo 
    $test->name;
        echo 
    $test->text;

    Ich habe es schon mit "foreach" probiert, aber es klappt nicht:

    PHP-Code:
    $anzahl count $row );
    echo 
    "<p>Es gibt $anzahl Einträge</p>";


     
    for (
    $x 0$x $anzahl$x++)
    {
    echo 
    "Spalte0: ".$row[$x]->jahr "</br>";

    Kann mir jemand Tips geben, was ich falsch mache.

    Gruß jdgf

  • #2
    Schalte mal das error reporting ein.

    http://php-de.github.io/jumpto/leitfaden/#fehlerausgabe

    Kommentar


    • #3
      PHP-Code:
      $data = Array (Array('jahr' => '1898',
                           
      'name' => 'Henry Moore',
                           
      'text' => '(in Castleford) englischer Bildhauer und Grafiker. Zählt zu den bedeutendsten Künstlern der Klassischen Moderne. + 31.08.1986 in Much Hadham.'),
                     Array(
      'jahr' => '1886',
                            
      'name' => 'Alfred Weber',
                            
      '(in Erfurt) deutscher Nationalökonom und Soziologe. Der Begründer der 'verstehenden' Soziologie entwickelt eine multikausale, historisch-soziale Kulturtheorie. + 02.05.1958 in Heidelberg.'),      
                     Array(
      'jahr' => '1863',
                           
      'name' => 'Henry Ford','
                           '
      text' => (in Dearborn/Michigan) US-amerikanischer Unternehmer. Konstruiert 1892 seinen ersten Motorwagen und gründet 1903 die Ford Automobilwerke. Führt 1912 als erster Hersteller die Fließbandfertigung ein. + 07.04.1947 in Detroit.'),
                     Array(
      'jahr' => '1814',
                           
      'name' => 'Johann Georg Halske',
                           
      'text' => '(in Hamburg) deutscher Elektrotechniker und Unternehmer. Gründet mit Werner Siemens 1847 die 'Telegraphen-Bauanstalt von Siemens Halske' in Berlin. + 18.03.1890 in Berlin.')
                   )
                   
      foreach(
      $data as $value)
          echo 
      $value['jahr'] . ' ' $value['name'] . ' ' $value['text'] . '<br>'
      Die Deutsche Rechtschreibung ist Freeware! Du darfst sie kostenlos nutzen, allerdings ist sie nicht Open Source, d.h. Du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

      Kommentar


      • #4
        wollt auch gerade schreiben .. im Grunde ist dein foreach-Ansatz nicht völlig falsch ... aber wieso denkst du, dann die 2te Array-Ebene mit "Verweisen" zu bearbeiten - du hast doch im var_dump selbst gesehen, dass der "innere Teil" auch wieder ein Array ist - dieses Array verschwindet doch nicht durch foreach ... und hat LEIDER numerische Indizes

        PHP-Code:
        foreach( $row as $test ) {
            echo 
        $test[0].'&nbsp;'.$test[1].'<br/>'.$test[2].'<br/>';

        Es ist natürlich etwas "doof", dass deine Datenbank-Methode dort AUSSCHLIESSLICH numerische Indizes liefert - es wäre weit günstiger, wenn du als Parameter "FETCH_ASSOC" (passend zu deiner Datenbank-Verbindung) genommen hättest, um im Array die Spaltennamen aus der Datenbank zu haben ... das ist weit intuitiver ...

        Wobei ... eine Anmerkung sei gestattet .. deine Datenbank ist nicht ordentlich normalisiert ... der Ort aus der Klammer gehört in eine weitere Spalte, damit Text eine "Atomare" Information enthält...
        "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste [IMG]http://www.php.de/core/images/smilies/icon_lol.gif[/IMG]

        Kommentar


        • #5
          Hallo eT18, uha und eagle275,

          erst mal meinen großen Dank, dass ihr mir geholfen habt.

          @eagle275
          Ich habe leider nur minimale Erfahrung mit PHP und bin wegen der Umstellung auf php7 dabei, meine einfachen Scripts anzupassen. Bisher nutzte ich PHP4/Mysql, aber das ist ja auch veraltet und man empfahl mir, da ich Joomla einsetze, auch JDatabase zu verwenden.

          Ich habe foreach genommen, weil ich davon ausging, dass ich eine Schleife brauche. Mir fiel keine andere Möglichkeit ein. Das Problem ist, dass die Anzahl der auszugebenden Einträge nicht fest ist, sondern je nach Kalendertag variieren kann.

          Damit ich es im Vergleich zu dem Vorschlag von uha verstehe, habe ich noch eine Frage. Bei JDatabase wären die Abfragen $db->loadAssocList($key, $column); oder $db->loadAssoc möglich. Lautet dann der Code
          PHP-Code:
          foreach( $row as $test ) {
              echo 
          $test[jahr].'&nbsp;'.$test[name].'<br/>'.$test[text].'<br/>';

          Kommentar


          • #6
            Beinahe ...

            Assoziative Array-Schlüssel sind immer Zeichenketten und gehören daher in Quotes .. PHP beschwert sich über deine Art der Programmierung mindestens mit einer Warnung ... und rettet dir hinten herum den Arsch, indem es annimmt du wolltest Konstanten verwenden, die dann hilfreicherweise genau dieser Zeichenkette entsprechen - aber das muss nicht funktionieren, wenn diese Konstanten schon anderweitig definiert sein sollten ...

            PHP-Code:
            foreach( $row as $test ) {
                echo 
            $test["jahr"].'&nbsp;'.$test["name"].'<br/>'.$test["text"].'<br/>';

            "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste [IMG]http://www.php.de/core/images/smilies/icon_lol.gif[/IMG]

            Kommentar


            • #7
              btw: der fehler oben lag daran das du mit dem pfeil
              PHP-Code:
              $arrayName->arrayElement 
              auf eine eigenschaft von einem objekt zugreifst.
              wie die anderen schon im code haben: auf das element in einem array greifst du mit
              PHP-Code:
              $arrayName['arrayKey'
              zu

              ich empfehl immer die einfachen quotes, da sonst nach variablen im inhalt der doubleqoutes gesucht werden
              hardcore will never die

              Kommentar


              • #8
                Danke für Hilfe

                Kommentar

                Lädt...
                X