php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 29.03.2006, 12:11  
ssm
Benutzer
 
Registriert seit: 21.03.2006
Beiträge: 65
ssm
Standard Multidimensionales Array nach String sortieren

Finde meinen Fall irgendwie nicht in der PHP-Doku.......

Hab ein Array der Form:
PHP-Code:
Array ( 
   [
0] => Array ( 
       [
id] => 
       
[name] => Apfel
   
)
   [
1] => Array (
       [
id] => 4
       
[name] => Motorhaube
   
)
   [
2] => Array ( 
       [
id] => 
       
[name] => Cornflakes
   
)

Möchte nun, dass das Unter-Array mit name=Cornflakes im Hauptarray an erster Stelle steht.

Mit ksort und array_multisort komm ich da irgendwie nicht weiter.....

Die Daten kommen übrigens aus der DB - lässt sich das vielleicht sogar im mysql-select-statement schon so vorsortieren ?


Innigsten Dank !
__________________
IP-Popularität und Linkpopularität
ssm ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 29.03.2006, 12:20  
Erfahrener Benutzer
 
Registriert seit: 09.05.2005
Beiträge: 193
akratellio
Standard

hi ssm,

probier mal das:

Code:
<?php

foreach($array as $k => $v){

   if($v['name'] == 'Cornflakes'){

       $n_array[0] = $v;

       }

   else{

       $n_array[] = $v;

       }

}

ksort($n_array);

print_r($n_array);

?>
mfg

akratellio
__________________
"Ich lüge immer..."
http://www.akratellio.de/dai
akratellio ist offline  
Alt 29.03.2006, 12:33  
ssm
Benutzer
 
Registriert seit: 21.03.2006
Beiträge: 65
ssm
Standard

Naja da wird $n_array[0] ja im Zweifelsfall überschrieben und mir fehlt ein Eintrag.
__________________
IP-Popularität und Linkpopularität
ssm ist offline  
Alt 29.03.2006, 12:37  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.235
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Vielleicht solltest du mal darstellen, was im Ergebnis rauskommen soll... Irgendwie finde ich den Ansatz bereits merkwürdig, vielleicht kannst auch mal den Gesamtzusammenhang beschreiben?
__________________
www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih
mepeisen ist offline  
Alt 29.03.2006, 12:41  
Erfahrener Benutzer
 
Registriert seit: 09.05.2005
Beiträge: 193
akratellio
Standard

hallo ssm,

(hast du's getestet?)
$n_array wird nicht überschrieben denn du definerst ja nur
die 0, alle neu angelegten Werte werden von php selbstständig
eingefügt und beginnen somit erst nach 0...

mfg

akratellio
__________________
"Ich lüge immer..."
http://www.akratellio.de/dai
akratellio ist offline  
Alt 29.03.2006, 12:42  
ssm
Benutzer
 
Registriert seit: 21.03.2006
Beiträge: 65
ssm
Standard

@akratellio

Geht natürlich wenn man der Schleife:
$n_array[0] = "";
vorranstellt !
Sonst definiert der erste Durchgang der Schleife ja $n_array[0] und es wird immer überschrieben, wenn nicht schon beim ersten Durchgang TRUE rauskommt.


Dank Dir !


@mepeisen

Moechte nen select-pulldown in ner Form auf der Edit-Seite voreinstellen, so dass der aktuelle Wert schon als erster im Pulldown erscheint -> hasse javascript-gefummel.

Wär aber natürlich schoen wenn man das schon im mysql-select vorsortieren koennte oder es noch ne elegantere Lösung gäbe.
__________________
IP-Popularität und Linkpopularität
ssm ist offline  
Alt 29.03.2006, 12:43  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.235
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Wenn Cornflakes später kommt, wird der 0.te Eintrag überschrieben, da hat ssm schon recht....
mepeisen ist offline  
Alt 29.03.2006, 12:47  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.235
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Im Select beispielsweise:

SELECT * FROM tabelle ORDER BY CASE name WHEN 'cornflakes' THEN 0 ELSE 1 END, id

Bei relativ wenigen Einträgen ist das ok, bei größeren Datenmengen eventuell nicht mehr performant.

Alternativ im Durchlaufen des Select-Ergebnisses im Array die Elemente anhand ihrer ID hinzufügen (die hoffentlich größer 0 ist) und cornflakes, sobald es auftritt als ID #0 hinzufügen, dann klappts auch mit dem Sortieren
__________________
www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih
mepeisen ist offline  
Alt 29.03.2006, 12:49  
Erfahrener Benutzer
 
Registriert seit: 09.05.2005
Beiträge: 193
akratellio
Standard

Zitat:
Zitat von akratellio
hi ssm,

probier mal das:

Code:
<?php

foreach($array as $k => $v){

   if($v['name'] == 'Cornflakes'){

       $n_array[0] = $v;

       }

   else{

       $n_array[] = $v;

       }

}

ksort($n_array);

print_r($n_array);

?>
mfg

akratellio
wenn nich, dann probier mal das

Code:
<?php

else{

       $cnt++;
       $n_array[$cnt] = $v;

       }


?>
__________________
"Ich lüge immer..."
http://www.akratellio.de/dai
akratellio ist offline  
Alt 29.03.2006, 13:32  
Erfahrener Benutzer
 
Registriert seit: 08.11.2004
Beiträge: 2.079
Der_Gerhard ist zur Zeit noch ein unbeschriebenes Blatt
Der_Gerhard eine Nachricht über ICQ schicken
Standard

Kann mir mal jemand sagen, was das alles soll?
Soll das Arrays sortiert werden oder sollen die Cornflakes einfach nur an erster Stelle, unabhängig von der alphabetischen Reihenfolge?

Die Verweise auf die Sortier-Funktionen deuten auf eine echte Sortierung hin. Nur müsste dann der Apfel schon an Platz 1 bleiben und erst dann die Cornflakes kommen...
Egal ob nach ID ider Namen sortiert wird.

Wenn wirklich ein Sortieren gemeint sein sollte, so ist uksort der Freund. Dort kann man eine Funktion angeben, die eine geeignete Sortierung erlaubt.

Ansonsten hab ich keinen Plan, was gewünscht ist.
__________________
**********************************
Nein, ich bin nicht die Signatur.
Ich putze hier nur.
**********************************
Der_Gerhard 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
Array sortieren mit regex Lupi PHP Tipps 2008 3 21.07.2008 15:17
php schreibt kein array ins array sondern string fragnicht PHP Tipps 2008 10 19.06.2008 15:03
Mehrdimensionales Array sortieren Unbekanntes_Pferd PHP Tipps 2006 6 23.05.2006 20:42
array richtig sortieren, dann ausgeben Heart PHP Tipps 2006 5 28.04.2006 20:23
Array auslesen andrew22 PHP Tipps 2006 3 21.01.2006 23:06
Multidimensionales Array assoziativ sortieren. PHP Tipps 2005-2 11 26.10.2005 20:13
Menü mit Unterpunkten supertramp Beitragsarchiv 7 18.10.2005 22:40
Array verkehrt sortieren (key) // letzter Arrayeintrag PHP Tipps 2005-2 5 20.09.2005 15:55
string in array sortieren... Dave Waterstone PHP Tipps 2005-2 4 07.09.2005 08:06
Sortieren von Arrays mit mehr als 2 Dimensionen (Teil 2) Buhmann PHP-Fortgeschrittene 4 12.07.2005 14:03
Array sortieren PHP Tipps 2005 7 15.05.2005 02:14
Array mit Gruppen: Wie Sortieren PHP Tipps 2005 2 29.01.2005 15:15
[Erledigt] Mehrdimensionales Array in eindimensionales Array umwandeln PHP-Fortgeschrittene 3 03.01.2005 22:31

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php array sortieren nach ids, php array string sortieren, string namen array sortieren, mehrdimensionales array nach string sortieren, array nach string sortieren, mysql select in array sortieren, java array unterarray, string in multidimensionalem array sortieren, array nach string sortieren php

Alle Zeitangaben in WEZ +2. Es ist jetzt 11:27 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.