Alt 18.06.2006, 13:36:50   #1 (permalink)
Nachteule

ID: 12341
Lose-Remote

evident eine Nachricht über ICQ schicken evident eine Nachricht über AIM schicken evident eine Nachricht über MSN schicken evident eine Nachricht über Yahoo! schicken
Reg: 20.04.2006
Beiträge: 499
evident ist jedem bekanntevident ist jedem bekanntevident ist jedem bekanntevident ist jedem bekanntevident ist jedem bekanntevident ist jedem bekannt
Frage [PHP] Multidimensionales Array sortieren und durchsuchen

Hallo,

ich möchte in einem Projekt eine Datenbank verwalten. Dies soll allerdings nur auf Dateien basieren, also keine MySQL-Nutzung etc.
Das gröbste funktioniert auch schon. Ich kriege die Dateien ausgelesen und in ein zweidimensionales Array gepackt. Speichern kann ich auch alles.

Beim Auslesen wird jede Zeile, die aus der Datei gelesen wird, in ein Array gepackt. Jede Zeile selbst wird mit explode() dann wieder in ein Array zerlegt. Ich erhalte also ein zweidimensionales Array, welches ich zur Übergabe zwischen den Seiten in der Session speichere. Beispiel:
$_SESSION['element'][2][0]
Gibt mir den Namen (also Feld 0) des dritten Eintrags im Array aus (geht ja bei null los)
also der erste Zahlenkey gibt immer den Datensatz an und der zweite Key das genaue Feld
  • 0=Name
  • 1=Bildlink
  • 2=Ort des Objekts
  • 3=Art des Objekts
  • 4=Farbe
  • 5=Größe
  • 6=Fach
u.s.w.

Hier ein Beispiel:
PHP-Code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
Array
(
    [
0] => Array
        (
            [
0] => Eintrag 1
            
[1] => Bildlink1
            
[2] => 1
            
[3] => 4
            
[4] => 7
            
[5] => 20
            
[6] => Fach 1
            
[7] => 
            [
8] => 
            [
9] => 
        )

    [
1] => Array
        (
            [
0] => Eintrag 2
            
[1] => Bildlink+2
            
[2] => 3
            
[3] => 4
            
[4] => 13
            
[5] => 34
            
[6] => Fach 2
            
[7] => 
            [
8] => 
            [
9] => 
        )

    [
2] => Array
        (
            [
0] => Dritte Eintrag
            
[1] => Bildlink3
            
[2] => 1
            
[3] => 1
            
[4] => 11
            
[5] => 33
            
[6] => Fach
            
[7] => 
            [
8] => 
            [
9] => 
        )

    [
3] => Array
        (
            [
0] => Der Vierte
            
[1] => Testlink+Nummer+4
            
[2] => 1
            
[3] => 1
            
[4] => 13
            
[5] => 22
            
[6] => Fach Nummer 4
            
[7] => 
            [
8] => 
            [
9] => 
        )

Nun möchte ich das Array sortieren lassen.Also ich will zum Beispiel der Größe nach ordnen.Also nun soll das Array Zeilenweise nach der Größe geordnet werden.

Also ich will dann zum Beispiel eine Tabelle erstellen können, die ungefähr so aussieht (am Beispiel oben gemessen)
--> ASC (aufsteigend)

Zitat:
Name | Bildlink | Farbe | Größe | ...
Eintrag 1 | Bildlink 1 | 7 | 20 | ...
Der Vierte | Testlink+Nummer+4 | 13 | 22 | ...
Dritte Eintrag | Bildlink3 | 11 | 33 | ...
...
Ihr wisst schon, was ich meine. Als würde ich eine MySQL Tabelle auslesen und ORDER BY Größe ASC machen.

Nur wie kriege ich das bei den Arrays hin?
Zur Ausgabe muss ich das $_SESSION['element'] Array aber noch in ein anderes kopieren, damit die in der Session gespeicherten Daten nicht dauerhaft umsortiert werden, sondern nur für die Ausgabe, oder?
also $datenbank=$_SESSION['element'];
dann ist $datenbank[0][0] der Name des ersten Eintrags etc.

Kann mir da einer helfen?

Dann habe ich noch ein Problem: Ich will ich eine Suchfunktion einbauen.
Man soll ein Suchkriterium eingeben können... also wenn ich suche, wo Farbe=7 ist, soll er alle Datensätze finden, bei denen die Farbe = 7 ist.
(in MySQL: WHERE farbe=7)

Nur wie kriege ich das in dem Array hin?

Wäre echt nett, wenn ihr mir da helfen könntet!

-Flori-
Meine neue Seite: www.placebo-effect.de
www.wilde-jungs.net | Die Götter des Nachtlebens!
Ich bin nur eine Leuchtdiode unter Glühbirnen...
evident ist offline   Mit Zitat antworten
Gesponsorte Links
Alt 18.06.2006, 13:44:04   #2 (permalink)
abgemeldet

Reg: 20.04.2006
Beiträge: 2.736
tedlemegba hat eine strahlende Zukunfttedlemegba hat eine strahlende Zukunfttedlemegba hat eine strahlende Zukunfttedlemegba hat eine strahlende Zukunfttedlemegba hat eine strahlende Zukunfttedlemegba hat eine strahlende Zukunfttedlemegba hat eine strahlende Zukunfttedlemegba hat eine strahlende Zukunfttedlemegba hat eine strahlende Zukunfttedlemegba hat eine strahlende Zukunfttedlemegba hat eine strahlende Zukunft
Standard

I.) Hab's mir nicht genauer angeschaut, aber mir fiel folgende Funktion ein:
array_multisort
(PHP 4, PHP 5)

array_multisort -- Sortiert mehrere oder multidimensionale Arrays
Beschreibung
bool array_multisort ( array ar1 [, mixed arg [, mixed ... [, array ...]]] )

II.) Das ginge doch evtl. mit einer Schleife [foreach, etc.] und dann evtl. weiteren kleinen Tricks. Zum Beispiel mithilfe von:

in_array
(PHP 4, PHP 5)

in_array -- Prüft, ob ein Wert in einem Array existiert
Beschreibung
bool in_array ( mixed needle, array haystack [, bool strict] )


(Ist ja immerhin nur zweidimensional.)

Edit: in_array ist (teilw./evtl.) Quark [geht aber evtl. eine Ebene höher schon; gibt auch noch eine Funktion, welche dir die Keys/Indizes liefert] in diesem Kontext... musst halt dann immer pro Key/Index das Element mit if mit dem gewünschten vergleichen!
tedlemegba ist offline   Mit Zitat antworten
Alt 18.06.2006, 13:51:30   #3 (permalink)
Nachteule

ID: 12341
Lose-Remote

evident eine Nachricht über ICQ schicken evident eine Nachricht über AIM schicken evident eine Nachricht über MSN schicken evident eine Nachricht über Yahoo! schicken
Reg: 20.04.2006
Beiträge: 499
evident ist jedem bekanntevident ist jedem bekanntevident ist jedem bekanntevident ist jedem bekanntevident ist jedem bekanntevident ist jedem bekannt
Cool

hmm zu zweitens hab ich schon nen Ansatz...

mit foreach das Array durchgehen (also jeden Datensatz)
und dann kann man ja gucken, ob der jeweilige Wert des gewünschten zweiten Keys mit dem Suchkriterium überinstimmt...

zu I.

ja, aber irgendwie komme ich mit dem array_multisort() nicht ganz klar... ich raff das einfach nicht.


Edit: ich habe es jetzt nochmal etwas mehr mit array_multisort() versucht...

hier mein Ergebnis:
PHP-Code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
$datenbank=$_SESSION['element'];


foreach (
$datenbank as $key => $sort) {
   
$krit1[$key]  = $sort['1'];
   
$krit2[$key] = $sort['0'];
}


array_multisort($krit1SORT_ASC$krit2SORT_ASC$datenbank);

print_r($datenbank);

foreach (
$datenbank as $key => $feld) {
echo
"<b>$feld[0] | $feld[1] | $feld[2]</b><br>";

Das kommt heraus:
Zitat:
Eintrag 2 | Bildlink+2 | 3
Eintrag 1 | Bildlink1 | 1
Dritte Eintrag | Bildlink3 | 1
Das Fünfte | Hehehe | 0
Nummer sex! | Sexlink+2 | 0
Der Vierte!2 | Testlink+Nummer+4 | 1
Also er listet nun die Zeilen nach $sort[1] aufwärts, also dem Bildlink...
Und als Zweitkriterium nimmt er den Namen als ASC...

kommt z.B. bei der Größe gut, weil da ja mehrere gleich sein können. Dann ordnet er erst nach Größe, dann nach Namen...

nun meine Frage? Ist das alles richtig geschrieben und effektiv? funktioniert das auch wirklich immer?

-Flori-
Meine neue Seite: www.placebo-effect.de
www.wilde-jungs.net | Die Götter des Nachtlebens!
Ich bin nur eine Leuchtdiode unter Glühbirnen...

Geändert von evident (18.06.2006 um 14:09:36 Uhr)
evident ist offline Threadstarter   Mit Zitat antworten
Alt 18.06.2006, 14:16:30   #4 (permalink)
Code-Frevler

ID: 118054
Lose-Remote

Reg: 20.04.2006
Beiträge: 860
Johnson ist einfach richtig nettJohnson ist einfach richtig nettJohnson ist einfach richtig nettJohnson ist einfach richtig nettJohnson ist einfach richtig nett
Standard

Zitat:
Zitat von evident
nun meine Frage? Ist das alles richtig geschrieben und effektiv? funktioniert das auch wirklich immer?
So wie ich es verstanden habe ja.
Johnson ist offline   Mit Zitat antworten
Antwort

Gesponsorte Links

Anzeige


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

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

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


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
*erledigt* [PHP] multidimensionales Array sortieren tedlemegba Programmierung 0 14.07.2007 16:53:16
[PHP] Array Durchsuchen timo_hildebrand Programmierung 6 03.04.2007 15:52:48
[PHP] ordner in array / array sortieren *erledigt* Anachronist Programmierung 7 22.10.2006 18:52:05
[PHP] Array sortieren tobias1985 Programmierung 13 29.09.2006 21:54:19
[php] Array sortieren Goltergaul Programmierung 4 30.08.2006 10:19:46


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:06:53 Uhr.