2012-03-26 13 views
0

bekam ich ein Array wie dieSortieren mehrdimensionales Array, der Index hat

Array 
(
    [0] => Array 
    (
     [UnitESN] => 14296 
     [ScanNo] => 1 
     [ScanDate] => Nov 21 
     [ScanTime] => 10:15 AM 
     [Qualifiers] => 
     [Notes] => 
     [BadgeData] => Array 
      (
       [0] => HEATH--- 
       [1] => MCCU---- 
       [2] => HER--- 
       [3] => [email protected] 
       [4] => 
       [5] => 393 
       [6] => 13350 
       [7] => 
       [8] => 
       [9] => 111 
      ) 

     [Signal] => +00/000 
     [ConnectionDelay] => 0407 
    ) 

    [1] => Array 

Und so weiter ... Ich möchte ASC oder DESC bestellen ... lassen Sie uns auf Col sagen 8 und Col 8 Eintragsnummer 7 (8-1, weil es bei Null beginnt) in BadgeData, irgendwelche Ideen? Ich habe array_multisort aber ohne Erfolg versucht.

Dank

+2

Es scheint mir, dass Sie nach ['uasort'] (http://ca2.php.net/uasort) suchen. –

+0

mögliches Duplikat von [Sortiere php mehrdimensionales Array nach Unterwert] (http://stackoverflow.com/questions/4508145/sort-php-multidimensional-array-by-sub-value) – Jon

+0

Wenn du den Kredit Francois willst, post eine Antwort. Ich habe es gefunden! @ Jon: Nicht die richtige Antwort in Ihrem "Duplikat" –

Antwort

1

Ich bin froh, dass Sie es herausgefunden haben. Hier ist, was ich angefangen habe zu schreiben, bevor ich unterbrochen wurde.

Grund uasort Beispiel:

<?php 

function cmp($a, $b) { 
    if ($a['BadgeData'][7] == $b['BadgeData'][7]) { 
     return 0; 
    } 
    // Ascending 
    return ($a['BadgeData'][7] < $b['BadgeData'][7]) ? -1 : 1; 
} 

// Order the values of the array based on the value in BadgeData[7] in ascending order.. 
uasort($array, 'cmp'); 

Es sieht aus wie ich, obwohl Ihre ursprüngliche Frage falsch verstanden haben, wie ich dachte, dass Sie das Array mit dem Wert in BadgeData[7] sortieren wollte, aber es scheint, wie Sie sortieren wollte die BadgeData für jeden Array-Wert.

+0

Ich habe ein Array mit [0] => [1] => etc ... bis wie 1000 ... jedes Array eine Zeile namens BadgeData haben. Innerhalb dieser Reihe gibt es ein Array namens [0], [1], [2], etc .. und es kann [2] sein und manchmal kann es [50000] abhängen, was cie ist es ... also brauche ich danach sortieren. [1] kann den Namen oder das Telefon halten oder sogar ansprechen, deshalb ... aber vielen Dank, ich werde Ihre Antwort markieren. –

1

Dank @Francois Deschenes mich auf die richtige Antwort zu führen. Hier ist, was ich gefunden habe:

http://ca2.php.net/manual/en/function.uasort.php#104714

I edited mein Bedürfnis zu passen. Vielen Dank !

function SortArrayByCol(array $Array, $Key, $ASC=true, $Col=0) { 
    $Result = array(); 

    $Values = array(); 
    foreach($Array as $ID => $Value){ 
     $Values[$ID] = isset($Value[$Key][$Col]) ? $Value[$Key][$Col] : null; 
    } 

    if($ASC){ 
     asort($Values); 
    } else { 
     arsort($Values); 
    } 

    foreach($Values as $Key => $Value) { 
     $Result[$Key] = $Array[$Key]; 
    } 

    return $Result; 
} 
Verwandte Themen