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

  • Gast-Avatar
    Ein Gast erstellte das Thema Array mit while Schleife auslesen.

    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]

  • imported_Ben
    antwortet
    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 ..

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Ahh, ok vielen Dank. Ist scheinbar doch komplizierter, als ich anfangs dachte, aber so klappts.


    Grüsse
    Florian

    Einen Kommentar schreiben:


  • lazydog
    antwortet
    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 . '
    
    ';

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    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

    Einen Kommentar schreiben:


  • lazydog
    antwortet
    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'] . '
    
    ';
    }

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    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 . "
    ";
    }

    Einen Kommentar schreiben:


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

    Einen Kommentar schreiben:

Lädt...
X