php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2007

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 19.06.2007, 17:00  
Benutzer
 
Registriert seit: 17.05.2006
Beiträge: 86
simsalabim
Standard Mehrdimensionales Array auswerten

Hallo,

ich bin hier am knobeln, und komme nicht weiter.
Wie kann ich in einem mehrdimensionalen Array bestimmte Werte auslesen.
Also wie kann ich in nachfolgendem simple-Beispiel nur die "Unterarrays" (wie nennt man die eigentlich richtig ?) ausgeben, bei denen category=111 ist ?

Besten Dank schonmal im voraus !


PHP-Code:
<?

error_reporting
(E_ALL);

    function 
liescsv()
    {
          global 
$books;  
                 
$books = array(
                      
'book1' => array(
                      
'title' => 'Tarzan',
                      
'author' => 'Jane',
                      
'publisher' => 'Cheeta',
                      
'category' => '111'),
                      
'book2' => array(
                      
'title' => 'Tarzan2',
                      
'author' => 'Jane',
                      
'publisher' => 'Cheeta',
                      
'category' => '111'),
                      
'book3' => array(
                      
'title' => 'Moby Dick',
                      
'author' => 'Wildecker Herzbuben',
                      
'publisher' => 'Werauchimmer',
                      
'category' => '222'),
                      
'book4' => array(
                      
'title' => 'Tarzan3',
                      
'author' => 'Jane',
                      
'publisher' => 'Cheeta',
                      
'category' => '111')
                      );  
                   }

liescsv();

echo 
"<pre>\n";
print_r($books);
echo 
"</pre>\n";

?>
__________________
Jeder Mensch ist klug !
Der eine vorher, der andere nachher ...
simsalabim ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 19.06.2007, 17:12  
Erfahrener Benutzer
 
Registriert seit: 13.08.2007
Beiträge: 1.976
KingCrunch befindet sich auf einem aufstrebenden Ast
KingCrunch eine Nachricht über ICQ schicken KingCrunch eine Nachricht über AIM schicken KingCrunch eine Nachricht über MSN schicken KingCrunch eine Nachricht über Yahoo! schicken
Standard

Du musst einfach beide als Schleife durchlaufen (foreach empfiehlt sich). Wenn du ein Array durchläufst, dann sind deren Werte in diesem Fall auch Arrays und können ebenso durchlaufen werden.

Ansonsten: Deine Funktion ist so garnicht durchdacht, richtig? Kein Rückgabewert, dafür global?

PHP-Code:
function liescsv () {
  
// do something
  
return $books;
}

$books liescsv (); 
__________________
Nicht jeder Fehler ist ein Bug.
KingCrunch ist offline  
Alt 19.06.2007, 17:49  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Hallo,
wie KingCrunch schon erwähnt hat, solltest du statt "global" ein "return" verwenden.

Dein Array an sich ist auch suboptimal eingrückt, denn ja auch hier läßt sich durch geeignete Whitespaces das Code-Reading verbessern.

Ein weiterer Ansatzpunkt ist, dass wieder einmal Deutsch mit Englisch gemischt wurde, entscheid dich doch einfach für eine Sprache.

Abgesehen davon ist deine Funktionsbeschreibung auch irreführend. Deine Funktion liest kein CSV, es definiert höchstens eine CSV-Struktur (was aber auch geraten ist).

Zu guter letzt: Warum nummerierst du die Schlüssel der ersten Dimension durch? Verzichte doch gleich auf das "book" Prefix und heraus käme ein numerisch indizierter Array.

PHP-Code:
<?php
function GetCsvStructure()
{
    return array(
'book1' => array('title'     => 'Tarzan',
                                  
'author'    => 'Jane',
                                  
'publisher' => 'Cheeta',
                                  
'category'  => '111'),
                 
'book2' => array('title' => 'Tarzan2',
                                  
'author' => 'Jane',
                                  
'publisher' => 'Cheeta',
                                  
'category' => '111'),
                 
'book3' => array('title' => 'Moby Dick',
                                  
'author' => 'Wildecker Herzbuben',
                                  
'publisher' => 'Werauchimmer',
                                  
'category' => '222'),
                 
'book4' => array('title' => 'Tarzan3',
                                  
'author' => 'Jane',
                                  
'publisher' => 'Cheeta',
                                  
'category' => '111'));  
}
?>
Übersicht gewonnen? (Edit: leider ist keine proportionale Schrift für den Code eingestellt)

Nur die Unterarrays (einen genormten Namen dafür kenne ich nicht) einer bestimmten Kategorie kannst du mit der Funktion array_filter() erhalten:
http://de.php.net/array_filter
Zergling-new ist offline  
Alt 19.06.2007, 21:25  
Benutzer
 
Registriert seit: 17.05.2006
Beiträge: 86
simsalabim
Standard

Hallo,

ihr habt beide recht ...
Der Code sieht nicht nur Schei... aus, er ist es auch noch ...


Zitat:
Zitat von Zergling
... Deine Funktion liest kein CSV ... einer bestimmten Kategorie kannst du mit der Funktion array_filter() erhalten ...
Die Funktion "liescsv" liest im "echten Leben" wirklich aus einer csv-Datei.
Den Multi-Array hab ich lediglich im "Klartext" geschrieben, damit es etwas klarer wird, worum es mir geht.
(OK, ist mir wohl auch nicht so gut gelungen ... )

Die "Unterarrays" haben keinen fortlaufenden Namen, sondern "Wortkurzformen" der jeweiligen Treffer aus der csv-Datei.
array_filter kannte ich noch nicht ... und bisher begreif ich es auch noch nicht, aber ich werd mal googeln und lesen ...

Zitat:
Zitat von KingCrunch
Du musst einfach beide als Schleife durchlaufen (foreach empfiehlt sich).
Das sagst du so einfach. Mit foreach "spiele" ich schon den halben Tag, aber entweder denke ich zu kompliziert, oder es ist für mich zu kompliziert ...
Aber gut zu wissen, dass ich zumindestens auf dem richtigen Weg war ...


Besten Dank euch beiden !
__________________
Jeder Mensch ist klug !
Der eine vorher, der andere nachher ...
simsalabim ist offline  
Alt 19.06.2007, 22:14  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Warum googlen, das PHP-Handbuch ist mehr als ausreichend um die Funktion zu verstehen und Beispiele geliefert zu bekommen.

array_filter() bekommt einen Array und einen Funktionsnamen übergeben. Diese Funktion bekommt dann einzeln die Elemente des Arrays. Je nachdem ob diese Funktion für das Element dann TRUE oder FALSE zurückliefert, ist dieses Element dann teil des von array_filter() zurückgegebenen Arrays.

Wenn du dir nicht sicher bist, auch bei foreach (), was in einer Variable steht, benutz var_dump() oder print_r() zur Ausgabe. Raten ist nicht nötig.
Zergling-new ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Turnierbaum aus array erstellen kingflo PHP-Fortgeschrittene 11 30.07.2008 11:32
mehrdimensionales Array als HTML-Formular mindhead PHP Tipps 2008 3 11.04.2008 15:25
Mehrdimensionales Array zusammen setzen... Hawk PHP Tipps 2008 11 08.10.2007 15:37
mehrdimensionales Array in Klasse erstellen Nixwisser PHP Tipps 2007 2 01.08.2007 14:30
Mehrdimensionales Array sortieren Unbekanntes_Pferd PHP Tipps 2006 6 23.05.2006 20:42
mehrdimensionales Array "auflösen" PHP Tipps 2006 9 25.01.2006 19:15
Array auslesen andrew22 PHP Tipps 2006 3 21.01.2006 23:06
Array Formatierung PHP Tipps 2006 3 17.01.2006 19:12
Menü mit Unterpunkten supertramp Beitragsarchiv 7 18.10.2005 22:40
[Erledigt] Mehrdimensionales Array in Session speichern PHP-Fortgeschrittene 6 11.10.2005 17:32
mehrdimensionales array an js übergeben PHP Tipps 2005-2 0 11.10.2005 15:51
Problem beim vergleichen von 2 Arrays PHP Tipps 2005-2 1 06.10.2005 14:25
[Erledigt] Mehrdimensionales Array in eindimensionales Array umwandeln PHP-Fortgeschrittene 3 03.01.2005 22:31
Abfrage mit id aus anderer Tabelle suter PHP Tipps 2004-2 15 16.12.2004 14:25

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php array auswerten, http://www.php.de/php-tipps-2007/44225-mehrdimensionales-array-auswerten.html, auswerten array mehrdimensional php, php mehrdimensionales array auswerten, mehrdimensionales array auswerten, auswertung mehrdimensionales array php, php array in view auswerten, php mehrdimensionales array array_filter ausgeben, csv in mehrdimensionales array, zweidimensionales array auswerten, multidimensionales bestimmte werte im foreach lesen, php arrays auswerten, php array mehrdimensional csv, array php \111\, bestimmte wertepaare aus mehrdimensionale arrays auslesen, zweidimensionales array in schleife auswerten php, wie nennt man ein array mit unterarrays, php array in array auswerten einzelne, php csv array_filter() zwischen werten, arrays auswerten php

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:35 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.