Ankündigung

Einklappen
Keine Ankündigung bisher.

Array mit while Schleife auslesen

Einklappen

Neue Werbung 2019

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

  • Array mit while Schleife auslesen

    Hallo,

    ich habe folgendes Problem:

    Ich habe einen Array, bei dem ich aber keine Ahnung habe, wie ich den jetzt in ein schön formatierten HTML text umwandeln kann.

    Mit open_r($data); wird mir im HTML Quelltext der Array folgendermaßen angezeigt:



    Code:
    Array
    (
        [0] => amazonrezensionen Object
            (
                [Rating] => 5
                [Summary] => the best to understand cities now and then
                [Comment] => this book, published for the first time in 1978, ask the main principle of the modern mouvement. Rowe and Koetter write about the opposition of the concept of "tabula rasa and an urban tradition taken from the historical memory and progressive sedimentation of the cities. "Collage" is a possible assimilation of the two different problematic, in the way that it's take past and future in a complex present.
            )
    
        [1] => amazonrezensionen Object
            (
                [Rating] => 1
                [Summary] => Pompous garbage
                [Comment] => This book is the most pompous garbage I have ever seen. It is unreadable drivel that has no point and adds nothing to the search for solutions to our urban problems. What were the authors thinking? They deserve the "Emperor has no clothes" award for this trash. Save your money and buy "A Pattern Language," "Edge City," "Changing Places," "Home from Nowhere," or any of many meaningful books that say something relevant.
            )
    
        [2] => amazonrezensionen Object
            (
                [Rating] => 5
                [Summary] => Most Important Book on Urban Design Theory Today
                [Comment] => Colin Rowe proposes a form of inclusive urbanism that meshes the modern city with the traditional city.
            )
    
    )
    Was ich am Ende im Browser Angezeigt haben möchte wäre z.B. sowas:

    5 Punkte the best to understand cities now and then
    this book, published for the first time in 1978, ask the main principle of the modern mouvement. Rowe and Koetter write about the opposition of the concept of "tabula rasa and an urban tradition taken from the historical memory and progressive sedimentation of the cities. "Collage" is a possible assimilation of the two different problematic, in the way that it's take past and future in a complex present.

    1 Punkt Pompous garbage
    This book is the most pompous garbage I have ever seen. It is unreadable drivel that has no point and adds nothing to the search for solutions to our urban problems. What were the authors thinking? They deserve the "Emperor has no clothes" award for this trash. Save your money and buy "A Pattern Language," "Edge City," "Changing Places," "Home from Nowhere," or any of many meaningful books that say something relevant.

    5 Punkte Most Important Book on Urban Design Theory
    Colin Rowe proposes a form of inclusive urbanism that meshes the modern city with the traditional city.

    Natürlich kann es aber auch mehr Datensätze geben.

    Irgenwie müsste es doch so aussehen, nur ist das $array sicherlich falsch?!

    while ($array < 10) {
    echo "$Rating Punkte",
    ."$Summary
    ",
    ."[i]$Comment";
    }
    Kann mir da jemand bitte helfen

    vorab schonmal danke,
    Flözen[/quote]

  • #2
    Code:
    $i = 0;
    while($i < count($array))
    {
    echo $array[Rating]."
    ".$array[Summary]."
    ".$array[Comment]."
    
    ;
    $i++;
    }
    Meinste das so ?

    Kommentar


    • #3
      Zitat von Biertrinker3
      Code:
      $i = 0;
      while($i < count($array))
      {
      echo $array[Rating]."
      ".$array[Summary]."
      ".$array[Comment]."
      
      ;
      $i++;
      }
      so werden einfach nur die 3 array elemente 3 mal ausgegeben
      zur ausgabe eines assoziativen array hilft keine while-schleife
      am einfachsten geht es so:
      Code:
      foreach($array as $key=>$value){
      echo "Index " . $key . " hat den Wert " . $value . "
      ";
      }

      Kommentar


      • #4
        So falsch war Biertrinker3s Vorschlag gar nicht, er hat nur den ersten (nummerischen) Index vergessen. So sollte es gehen:
        Code:
        for($i = 0;$i < count($data);$i ++)
        {
            echo '' . $data[$i]['Rating'] . '' . $data[$i]['Summary'] . '
        ' . $data[$i]['Comment'] . '
        
        ';
        }
        Gruss
        L

        Kommentar


        • #5
          Vielen dank für die Zahlreichen antworten. Ein stückchen weiter wäre ich damit, aber die anzeige haut noch nicht hin

          Mit
          Code:
          for($i = 0;$i < count($data);$i ++) {
           
          echo 'test:' . $data[$i]['Rating'] . '' . $data[$i]['Summary'] . '
          ' . $data[$i]['Comment'] . '
          
          '; 
           }
          [/quote]

          oder

          Code:
          $i = 0; 
           while($i < count($data)) 
           { 
           echo $i.$data[Rating]."
          ".$data[Summary]."
          ".$data[Comment]."
          
          "; 
           $i++; 
           }
          oder auch
          Code:
          foreach($data as $key=>$value){ 
           echo "Index " . $key . " hat den Wert " . $value . "
          "; 
           }
          bekomme ich immerhin 3 Datensätze angezeigt (Also Zeilen, in denen nur was steht, was ich auch direkt in den Quelltext geschrieben habe). Leider Fehlt bei allen der Inhalt der Felder Rating, Summery und Comment...
          Bei der letzten Methode steht dann:

          Index 0 hat den Wert Object
          Index 1 hat den Wert Object
          Index 2 hat den Wert Object

          Also irgendwie noch nicht ganz befriedigend...

          Hier nochmal die Funktionen aus denen das oben beschriebenen Array erzeugt wird. Vielleicht kann mir auf Grund dieser Info jemand noch weiter helfen


          Code:
          global $amazon_id, $developer_token;
          
          $get_xml = fopen("http://xml-eu.amazon.com/onca/xml3?t=$amazon_id&dev-t=$developer_token&AsinSearch=$isbn&type=heavy&f=xml&locale=de", "r");
          while ($read = fread($get_xml, 1024)) {
          $amazon_file .= $read;
          }
          fclose($get_xml);
          
          
          $CustomerReview = $amazon_file;
          
          
          class AmazonRezensionen {
          	var $Rating;
          	var $Summary;
          	var $Comment;
          	
          	function AmazonRezensionen ($aa) {
          		foreach ($aa as $k=>$v)
          			$this->$k = $aa[$k];
          			}
          }
          
          function readRezension($CustomerReview) {
          
          // Read the part of the Database we need
          // Da wir keine Datei lesen kommt folgendes
          $data = $CustomerReview;
          
          // Falls aus einer XML Datei gelsen werden soll
          //$data = implode("", $CustomerReview);
          
          
          $parser = xml_parser_create();
          xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
          xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
          xml_parse_into_struct($parser, $data, $values, $tags);
          xml_parser_free($parser);
          
          // loop through the structures
          foreach ($tags as $key=>$val) {
          	if ($key == "CustomerReview") {
          		$reviewranges = $val;
          		// each contiguous pair of array entries are the 
          		// lower and upper range for each review
          		for ($i=0; $i < count($reviewranges); $i+=2) {
          				$offset = $reviewranges[$i] + 1;
          			$len = $reviewranges[$i + 1] - $offset;
          			$tdb[] = parseRezension(array_slice($values, $offset, $len));
          			}
          		} else {
          			continue;
          		}
          	}
          	return $tdb;
          }
          
          function parseRezension($amazonvalues) {
          	for ($i=0; $i < count($amazonvalues); $i++) {
          		$arez[$amazonvalues[$i]["tag"]] = $amazonvalues[$i]["value"];
          		}
          		return new AmazonRezensionen ($arez);
          }
          
          $data = readRezension($CustomerReview);
          echo "Amazon ausgabe:
          ";
          print_r($data);
          Vielen Dank soweit

          Floezen

          Kommentar


          • #6
            Sorry, ich habe übersehen, dass es sich um einen Array von Objekten handelt, und nicht einen Array von Arrays. Dann gehts z.B. folgendermassen:
            Code:
            for($i = 0;$i < count($data);$i ++)
            {
                echo '' . $data[$i]->Rating . ' Punkt(e) ' . $data[$i]->Summary . '
            ' . $data[$i]->Comment . '
            
            ';
            Gruss
            L

            Kommentar


            • #7
              Ahh, ok vielen Dank. Ist scheinbar doch komplizierter, als ich anfangs dachte, aber so klappts.


              Grüsse
              Florian

              Kommentar


              • #8
                kleine anekdote .. ich hab gestern nacht an einem 2-dimensionalen array rumgewerkelt, wobei die zweite dimension objekte beinahltet hat, die dann aber wiederum unterschiedliche eigenschaften hatten ..

                ich sag nur ..
                um 3:00 hatte ich es dann .. man muss nur lang genug probieren ..

                naja .. nur so ein wenig spam am rande ..
                [b][url=http://www.benjamin-klaile.de]privater Blog[/url][/b]

                Kommentar

                Lädt...
                X