php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 05.07.2005, 17:07  
Erfahrener Benutzer
 
Registriert seit: 20.01.2005
Beiträge: 1.557
PHP-Kenntnisse:
Fortgeschritten
Buhmann ist zur Zeit noch ein unbeschriebenes Blatt
Buhmann eine Nachricht über ICQ schicken Buhmann eine Nachricht über MSN schicken
Standard Sortieren von Arrays mit mehr als 2 Dimensionen (Teil 2)

Sry wenn das jetzt falsch war, wenn ich diesen Thread geöffnet habe...
ich habe waq schon ne pn geschrieben aber ich muss jetzt weg vom pc und will die Lösung noch posten (Es handelt sich natürlich um die Frage aus dem Thread gleichen Namens).

zum Originalthread

PHP-Code:
<?php
function array_dimensionsort($array,$wert,$desc=0,$key=0,$mode SORT_REGULAR) {
    
$temp = array();
    foreach(
$array AS $key => $value) {
        
$temp[$key] = $value[$wert];
    }
    if(
$desc)
        
arsort($temp,$mode);
    else
        
asort($temp,$mode);
    
$return = array();
    foreach(
$temp AS $key => $value) {
        if(
$key)
            
$return[$key] = $array[$key];
        else
            
$return[] = $array[$key];
    }
    return 
$return;
}

$array = array( array(  "wert1" => 4,
                        
"wert2" => 6,
                        
"wert3" => "lala"),
                array(  
"wert1" => 13,
                        
"wert2" => 1,
                        
"wert3" => "abc"),
                array(  
"wert1" => 6000,
                        
"wert2" => -7,
                        
"wert3" => "Haus"),
                array(  
"wert1" => 1,
                        
"wert2" => 11,
                        
"wert3" => "foo"),
                array(  
"wert1" => 99,
                        
"wert2" => 38,
                        
"wert3" => "bar"));
                        
$a array_dimensionsort($array,"wert1"); //sortiert nach wert1
$b array_dimensionsort($array,"wert2",1); //rückwärts sortiert nach wert2
$c array_dimensionsort($array,"wert1",0,0,SORT_STRING); //sortiert nach wert1, als wenn es ein String wäre
$d array_dimensionsort($array,"wert3",1,1); //sortiert rückwärts nach wert3und behält Indexverbindung bei
print_r($array);
print_r($a);
print_r($b);
print_r($c);
print_r($d);
?>
Ausgabe:
Code:
Array
(
    [0] => Array
        (
            [wert1] => 4
            [wert2] => 6
            [wert3] => lala
        )

    [1] => Array
        (
            [wert1] => 13
            [wert2] => 1
            [wert3] => abc
        )

    [2] => Array
        (
            [wert1] => 6000
            [wert2] => -7
            [wert3] => Haus
        )

    [3] => Array
        (
            [wert1] => 1
            [wert2] => 11
            [wert3] => foo
        )

    [4] => Array
        (
            [wert1] => 99
            [wert2] => 38
            [wert3] => bar
        )

)
Array
(
    [3] => Array
        (
            [wert1] => 1
            [wert2] => 11
            [wert3] => foo
        )

    [4] => Array
        (
            [wert1] => 99
            [wert2] => 38
            [wert3] => bar
        )

    [1] => Array
        (
            [wert1] => 13
            [wert2] => 1
            [wert3] => abc
        )

    [2] => Array
        (
            [wert1] => 6000
            [wert2] => -7
            [wert3] => Haus
        )

)
Array
(
    [4] => Array
        (
            [wert1] => 99
            [wert2] => 38
            [wert3] => bar
        )

    [3] => Array
        (
            [wert1] => 1
            [wert2] => 11
            [wert3] => foo
        )

    [5] => Array
        (
            [wert1] => 4
            [wert2] => 6
            [wert3] => lala
        )

    [1] => Array
        (
            [wert1] => 13
            [wert2] => 1
            [wert3] => abc
        )

    [2] => Array
        (
            [wert1] => 6000
            [wert2] => -7
            [wert3] => Haus
        )

)
Array
(
    [3] => Array
        (
            [wert1] => 1
            [wert2] => 11
            [wert3] => foo
        )

    [1] => Array
        (
            [wert1] => 13
            [wert2] => 1
            [wert3] => abc
        )

    [4] => Array
        (
            [wert1] => 99
            [wert2] => 38
            [wert3] => bar
        )

    [2] => Array
        (
            [wert1] => 6000
            [wert2] => -7
            [wert3] => Haus
        )

)
Array
(
    [0] => Array
        (
            [wert1] => 4
            [wert2] => 6
            [wert3] => lala
        )

    [3] => Array
        (
            [wert1] => 1
            [wert2] => 11
            [wert3] => foo
        )

    [4] => Array
        (
            [wert1] => 99
            [wert2] => 38
            [wert3] => bar
        )

    [1] => Array
        (
            [wert1] => 13
            [wert2] => 1
            [wert3] => abc
        )

    [2] => Array
        (
            [wert1] => 6000
            [wert2] => -7
            [wert3] => Haus
        )

)
zum Originalthread
Buhmann ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 06.07.2005, 10:03  
Erfahrener Benutzer
 
Registriert seit: 25.04.2005
Beiträge: 1.356
HStev zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

das hättes du auch wesentlich einfacher haben können

http://www.php.net/manual/de/function.usort.php
http://www.php.net/manual/de/function.uasort.php
http://www.php.net/manual/de/function.uksort.php
HStev ist offline   Mit Zitat antworten
Alt 06.07.2005, 14:14  
Erfahrener Benutzer
 
Registriert seit: 20.01.2005
Beiträge: 1.557
PHP-Kenntnisse:
Fortgeschritten
Buhmann ist zur Zeit noch ein unbeschriebenes Blatt
Buhmann eine Nachricht über ICQ schicken Buhmann eine Nachricht über MSN schicken
Standard

hm stimmt... wusste garnet, dass man die funktion dafür verwenden kann....

wieder was dazugelernt ^^
Buhmann ist offline   Mit Zitat antworten
Alt 12.07.2005, 13:54  
Gast
 
Beiträge: n/a
Standard

Buhmann: Dein Programm ist irgendwie fehlerhaft
Wenn ich folgendes Array nach dem 2. Eintrag jeder Zeile sortieren will:
Code:
$array = array(
	array(1,3,1,1),
	array(2,5,2,2),
	array(3,2,3,3),
	array(4,1,4,4),
	array(5,4,5,5),
);
                       
print_r($array);
$array = array_dimensionsort($array,1);
print_r($array);
enthält das Array nur noch 4 statt 5 Zeilen, eine geht verloren!
Und die Indexverbindungen werden auch beibehalten, obwohl ich das nicht will:
Code:
Array
(
    [3] => Array
        (
            [0] => 4
            [1] => 1
            [2] => 4
            [3] => 4
        )

    [2] => Array
        (
            [0] => 3
            [1] => 2
            [2] => 3
            [3] => 3
        )

    [4] => Array
        (
            [0] => 5
            [1] => 4
            [2] => 5
            [3] => 5
        )

    [1] => Array
        (
            [0] => 2
            [1] => 5
            [2] => 2
            [3] => 2
        )

)
tut mir leid, ich finde damit keine Lösung des Problems. Mit diesen Funktionen kann ich Unterarrays sortieren, also einzelne Zeilen, ich will aber das ganze Array sortieren, also die Zeilen gegeneinander tauschen.
  Mit Zitat antworten
Alt 12.07.2005, 14:03  
Gast
 
Beiträge: n/a
Standard Re: Sortieren von Arrays mit mehr als 2 Dimensionen (Teil 2)

Du hast $key doppelt benutzt
so funktioniert es:
PHP-Code:
<?php
function array_dimensionsort($array,$wert,$desc=0,$keepkeys=0,$mode SORT_REGULAR) {
    
$temp = array();
    foreach(
$array AS $key => $value) {
        
$temp[$key] = $value[$wert];
    }
    if(
$desc)
        
arsort($temp,$mode);
    else
        
asort($temp,$mode);
    
$return = array();
    foreach(
$temp AS $key => $value) {
        if(
$keepkeys)
            
$return[$key] = $array[$key];
        else
            
$return[] = $array[$key];
    }
    return 
$return;
}

$array = array( array(  "wert1" => 4,
                        
"wert2" => 6,
                        
"wert3" => "lala"),
                array(  
"wert1" => 13,
                        
"wert2" => 1,
                        
"wert3" => "abc"),
                array(  
"wert1" => 6000,
                        
"wert2" => -7,
                        
"wert3" => "Haus"),
                array(  
"wert1" => 1,
                        
"wert2" => 11,
                        
"wert3" => "foo"),
                array(  
"wert1" => 99,
                        
"wert2" => 38,
                        
"wert3" => "bar"));
                        
$a array_dimensionsort($array,"wert1"); //sortiert nach wert1
$b array_dimensionsort($array,"wert2",1); //rückwärts sortiert nach wert2
$c array_dimensionsort($array,"wert1",0,0,SORT_STRING); //sortiert nach wert1, als wenn es ein String wäre
$d array_dimensionsort($array,"wert3",1,1); //sortiert rückwärts nach wert3und behält Indexverbindung bei
print_r($array);
print_r($a);
print_r($b);
print_r($c);
print_r($d);
?>
  Mit Zitat antworten
Antwort


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
If-Abfrage mit mehrdimensionalen Arrays fehlerhaft aherzog PHP Tipps 2008 19 23.06.2008 08:16
JavaScript/PHP: qooxdoo 0.7.1 - Teil 1 : Eine Einführung Zergling-new Tutorials 6 25.01.2008 10:41
eindimensionale arrays sortieren webazubi PHP Tipps 2007 5 23.03.2007 18:11
Sortieren eines Arrays mittels Funktion ? madSoul PHP Tipps 2007 16 22.02.2007 11:49
Arrays sortieren, Bezeichnung, Preis Ticos PHP Tipps 2006 4 07.09.2006 19:37
Fehlermeldung beim Sortieren meines Arrays... GELight PHP Tipps 2006 5 27.04.2006 22:08
[Erledigt] 2 Arrays miteinander vergleichen PHP Tipps 2007 3 17.12.2005 16:54
Arrays alphabetisch sortieren seven-12 PHP Tipps 2007 4 17.11.2005 14:33
Sortieren von Arrays mit mehr als 2 Dimensionen PHP-Fortgeschrittene 8 05.07.2005 16:48
Problem beim Sortieren PHP Tipps 2005-2 5 29.06.2005 07:00
sortieren von arrays aus mysql Datenbanken 7 28.04.2005 21:53
5 assosiative arrays gleichzeitig sortieren PHP Tipps 2004-2 2 13.12.2004 14:07
Erkennung von Arrays in Strings PHP-Fortgeschrittene 15 07.12.2004 13:00
Arrays nachträglich (Inhalte) zählen und sortieren Gumfuzi PHP Tipps 2004-2 3 20.11.2004 00:00
Mehrdimensionale Arrays sortieren Borlox PHP Tipps 2004 5 23.09.2004 14:52

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php array sort by value, http://www.php.de/php-fortgeschrittene/26100-sortieren-von-arrays-mit-mehr-als-2-dimensionen-teil-2-a.html, php array sortieren nach wert, php array werte sortieren, array nach wert sortieren, asort() fehlermeldung, php array sortieren alphabetisch, array alphabetisch sortieren, php array spalten zeilen tauschen, php sort array by value, php array nach wert sortieren, alphabetisch sortieren php außer einen wert, php array ordnen nach alphabeth ausgabe mit abc, php array sortieren abc, sort array by value php, php array mehrdimensional key alphabetisch sortieren, php array nach einem wert sortieren, array keys alphabetisch sortieren php, php array alphabetisch sortieren nach key, qooxdoo array for each

Alle Zeitangaben in WEZ +1. Es ist jetzt 21:54 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.