array sortierung

JesusFreak777

Erfahrenes Mitglied
Hallo,

ich weiß das thema ist nicht selten und es gibt auch anleitungen, doch leider finde ich nicht genau das was ich suche (evtl. falsche suchtechnik)

ich habe hier ein array:
Code:
Array
(
    [AU01001] => Array
        (
            [kunde] => edv-baer
            [referenz] => 2011-01-18
            [artikel] => Bier
            [termin] => 20114
            [erledigt] => false
            [info] => 
            [item] => Array
                (
                    [item] => Barcodescanner
                    [number] => 2
                    [erledigt] => false
                )

        )

    [AU01002] => Array
        (
            [kunde] => edv-baer
            [referenz] => 2011-01-18
            [artikel] => Leberkäse
            [termin] => 20115
            [erledigt] => false
            [info] => test
            [item] => Array
                (
                    [item] => SafetyDoc
                    [number] => 1
                    [erledigt] => false
                )

        )

    [AU01003] => Array
        (
            [kunde] => edv-baer
            [referenz] => 2011-01-18
            [artikel] => Weißwürste
            [termin] => 20112
            [erledigt] => false
            [info] => 
            [item] => Array
                (
                    [item] => Barcodescanner
                    [number] => 1
                    [erledigt] => false
                )

        )

)

in diesen fall würde das bedeuten, oben ist AU01003 dann kommt AU01001 zuletzt, AU01002.

irgendwie versteh ich das nicht, ich möchte das array jetzt nach termin sortieren gibt es da eine möglichkeit?

danke
 
Dafür wirst du dir eine eigene Sortierfunktion basteln müssen. Schau da mal bei [phpf]usort[/phpf] vorbei.

Und achte bitte mehr auf deine Groß- und Kleinschreibung.
 
ja, aber wie komme ich in die einzelnen ebenen? evtl. ein beispiel? weil wenn ich sortiere dann entweder die ganze obere Kategorie oder eben die Unterkategorie, aber wie kann ich die Oberkategorien nach nen wert in der Unterkategorie sortieren?
 
Genau das habe ich vor längerer Zeil mal gelöst: http://wiki.yaslaw.info/wikka/PhpArraySortBySubarrayItem

PHP:
sortBy($array, 'termin');
var_dump($array);

function sortBy(&$array, $key, $direction = SORT_ASC, $sort_flags = SORT_REGULAR){
    $factor = ($direction ==SORT_DESC) ? -1 : 1;
    if(is_numeric($key)){
        $convert = '$a = array_values($a); $b = array_values($b);';
        $a = "\$a[{$key}]";     $b = "\$b[{$key}]";
    } else {
        $convert = "";
        $a = "\$a['{$key}']";   $b = "\$b['{$key}']";
    }
    switch($sort_flags){  
        case SORT_NUMERIC:
            $function = "({$a} == {$b}) ? 0 : ({$a} > {$b}) ? -1 : 1";
            break;      
        case SORT_REGULAR:
        case SORT_STRING:
        default:
            $function = "strcmp({$a}, {$b})";
    }
    $function = "{$convert} return $factor * ($function);";
    return uasort($array, create_function('$a, $b', $function));    
}
 
Zuletzt bearbeitet:
wow, danke,... das funktioniert.

Jetzt habe ich trotzdem noch ein Problem. Wie kann ich jetzt das Array ausgeben?

ich möchte gerne eine forschleife basteln in der ich dann das Array automatisiert ausgebe.

for(.....)
{

$meinarray[ebene1[$i][spalte1] - $meinarray[ebene1[$i][spalte2],...

}

aber was ist ebene1 mit $meinarray[0] kommt nichts sinnvolles raus.

danke
 
Lass dir das Array doch einfach mal ausgeben mit [phpf]print_r[/phpf]. Dann kannst du dir die Struktur anschauen.
 
ja, naja das habe ich ja gemacht, sieht aus wie oben,...

z.B.
Code:
Array
(
    [AU01001] => Array
        (
            [kunde] => edv-baer
            [referenz] => 2011-01-18
            [artikel] => Bier
            [termin] => 20114
            [erledigt] => false
            [info] => 
            [item] => Array
                (
                    [item] => Barcodescanner
                    [number] => 2
                    [erledigt] => false
                )
 
        )
 
    [AU01002] => Array
        (
            [kunde] => edv-baer
            [referenz] => 2011-01-18
            [artikel] => Leberkäse
            [termin] => 20115
            [erledigt] => false
            [info] => test
            [item] => Array
                (
                    [item] => SafetyDoc
                    [number] => 1
                    [erledigt] => false
                )
 
        )
 
    [AU01003] => Array
        (
            [kunde] => edv-baer
            [referenz] => 2011-01-18
            [artikel] => Weißwürste
            [termin] => 20112
            [erledigt] => false
            [info] => 
            [item] => Array
                (
                    [item] => Barcodescanner
                    [number] => 1
                    [erledigt] => false
                )
 
        )
 
)

in diesen Fall müsste ich jetzt z.B. $meinarray['AU01001'] eingeben aber AU01001 ist für mich eine unbekannte und nicht forschleifentauglich da auch nummern übersprungen werden können,...

gibt es nicht wie beim normalen Array jetzt (nach der Sortierung) irgend sowas wie stelle 0 - x (x = count($meinarray) - 1)

grüße
 
Zurück