Ergebnis 1 bis 6 von 6

Thema: [PHP] multidimensionaler array sortieren

  1. #1
    Forum Guru
    Registriert seit
    04.04.2005
    Beiträge
    4.139
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard [PHP] multidimensionaler array sortieren

    Hallo

    Ich habe einen array z.B.
    Ich will denn sorteren und zwar so das der Array nach [file][][name] sortiert ist. Case Insensitive und absteigend

    Code:
    Array
    (
        [file] => Array
            (
                [0] => Array
                    (
                        [type] => file
                        [name] => md5.php
                        [path] => /var/www/md5.php
                        [...] //noch mehr
                    )
    
                [1] => Array
                    (
                        [type] => file
                        [name] => _test.txt
                        [path] => /var/www/_test.txt
                        [...] //noch mehr
                    )
    ...
    Code:
    //Beispiel ausgabe von den [file][*][name] Strings
    .htaccess
    3.php
    10_bla.php
    affe.png
    Affe.png
    z.txt
    Kann mir da jemand helfen?
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!
    Facebook Gruppe: Böses Encoding

  2. #2
    Forum Guru
    Themenstarter

    Registriert seit
    04.04.2005
    Beiträge
    4.139
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Hab mal was gebastelt

    Code:
    function record_natsort($records, $field)
    {
    	$hash = array();
    		foreach($records as $key => $record){
    			$hash[$key] = $record['name'];
    		}
    	natsort($hash);
    	$records_end = array();
    		foreach($hash as $key => $record){
    			$records_end[]= $records[$key];
    		}
    return $records_end;
    }
    sortiert kommt dann sowas raus
    Code:
    0
    3.txt
    10.txt
    10_bla.txt
    _test.txt
    c99.php
    c99.txt
    dbg-wizard.php
    index.html
    index.php
    md5.php
    md5.php~
    nowPlaying.txt
    phpinfo.php
    shell.php
    test.txt
    test2.txt
    Die Idee war zwar das es so sortiert wie die Datei Manager auf dem Computer, doch diese machen wohl auch alle etwas anderes.

    z.B. Konqueror ignoriert das _ am anfang eines Dateinamens etc.
    Facebook Gruppe: Böses Encoding

  3. #3
    Shogun Avatar von DarkSyranus
    Registriert seit
    28.03.2006
    Ort
    ::1/128
    Alter
    25
    Beiträge
    3.446
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings
    Blog-Einträge
    1

    Standard

    Hm, das müsste man verschachtelt mit 2 Arrays lösen, aber ist ne ziemliche Rechenliestung wenn die Liste mal etwas länger wird.

    Kannst du nicht einfach ein zweites Array erstellen, dass erste einmal durchgehen und jeden Schlüssel im 2. Array durch den Name referenzieren lassen?

    Hoffe die Antwort ist verständlich

  4. #4
    Forum Guru
    Themenstarter

    Registriert seit
    04.04.2005
    Beiträge
    4.139
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Ich verstehe nicht wirklich wie du das mit dem referenzieren meinst.

    Ich denke meine Lösung oben sollte genügen und die braucht auch nicht soviel Leistung.

    Hab das ganze mal durch einen PHP Profiler gejagt und gemischte ergebnisse bekommen, teilweise braucht «error_reporting(E_ALL);» mehr zeit als das sortieren.

    Im moment ist das Grössere Problem mein JS das nach der Antwort Zeit von ca. 50-60ms bis zu 10sekunden das ganze parst.
    Ich übergebe das als XML.

    Und das Script wird wohl auf Vista nicht laufen.
    Vista gibt bei readdir die Verzeichnisse teilweise so zurück das man sie mit scandir nicht lesen kann, also sehr wahrscheinlich diese Vista spezifische Symlinks die so schön verwirren.
    Facebook Gruppe: Böses Encoding

  5. #5
    Shogun Avatar von DarkSyranus
    Registriert seit
    28.03.2006
    Ort
    ::1/128
    Alter
    25
    Beiträge
    3.446
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings
    Blog-Einträge
    1

    Standard

    Code:
    <?php
    	
    	$array = array&#40;
    		'file' => array&#40;
        	'0' => array&#40;
          	'type' => 'file',
            'name' => 'test.txt',
            'path' => '/var/www/_test.txt'
          &#41;,
    
    			'1' => array&#40;
            'type' => 'file',
            'name' => 'md5.php',
            'path' => '/var/www/md5.php'
          &#41;
    		&#41;
    	&#41;;
    
    	$sorted = array&#40;&#41;;
    
    	foreach&#40;$array&#91;'file'&#93; as $key => $value&#41;
    	&#123;
      	$sorted&#91;$value&#91;'name'&#93;&#93; =& $array&#91;'file'&#93;&#91;$key&#93;;
    	&#125; 
    
    	ksort&#40;$sorted&#41;;
    
    	var_dump&#40;$sorted&#41;;
    ?>
    Ich meinte in etwa so.

  6. #6
    Forum Guru
    Registriert seit
    28.12.2004
    Ort
    Ringgenberg(bei Interlaken) / Schweiz
    Beiträge
    4.787
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    schon mal was von usort() gehört?

Ähnliche Themen

  1. array sortieren
    Von im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 3
    Letzter Beitrag: 18.01.2007, 12:17
  2. sortieren
    Von Hellen im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 3
    Letzter Beitrag: 26.11.2006, 21:04
  3. Bildergalleryscript sortieren
    Von h34di im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 0
    Letzter Beitrag: 12.07.2006, 18:29
  4. Sortieren von Arrays A // a
    Von ::RMB:: im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 4
    Letzter Beitrag: 16.03.2006, 17:56
  5. Array sortieren baumartig.
    Von GreenRover im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 1
    Letzter Beitrag: 12.05.2005, 13:35

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •