2016-06-10 15 views
-1

Guten Tag Jungs,Sub-Wert von einem multidimensionalen Array zu sortieren

Schon den ganzen Tag nach einer Lösung für dieses Problem gesucht.

Mein Array sieht so aus.

[status] => success 
[city] => Array 
    (
     [0] => Array 
      (
       [street] => Array 
        (
         [name] => 'las vegas' 
        ) 
      { 
     [1] => Array 
      (
       [street] => Array 
        (
         [name] => 'york' 
        ) 
      { 

mein Problem ist folgendes, ich brauche dieses Array
sortieren basierend auf [name] (Beispielinhalte sind 'Las Vegas', 'york'

bereits getan Dinge wie
usort und uasort und zu meiner Überraschung, sie wird nicht funktionieren.

dank im Voraus!

UPDATE Beispielcode von usort

foreach($myArr['city'] as $city) { 
     foreach($city['street'] as $street) { 
      function sort ($a, $b) { 
       return strcmp ($a['name'], $b['name']); 
      } 
     } 
} 

usort($myArr, 'sort'); 
+3

Zeigen Sie uns Ihren Code mit usort weil es – nospor

+0

Ihr Array nicht richtig sieht nicht funktionieren sollte, weil es ohne Schließen 'curly'brackets Öffnen' curly' Klammern ist. – Ali

+0

Entschuldigung, es ist nur ein Beispiel meines Arrays, ich meine nicht, dass es das ganze Array selbst ist. –

Antwort

1

usort sollte in Ihrem Fall arbeiten. Bitte überprüfen Sie Ihren Code.
Möglicherweise verwenden Sie nicht strcmp, um das Array nach Namen zu sortieren.

Der folgende Code sollte funktionieren.

<?php 
$cities=array(
    array(
    "street"=> array (
     "name"=> 'las vegas' 
    ) 
    ), 
    array(
    "street"=> array (
     "name"=> 'C' 
    ) 
    ), 
    array(
    "street"=> array (
     "name"=> 'york' 
    ) 
    ), 
    array(
    "street"=> array (
     "name"=> 'A' 
    ) 
    ), 
    array(
    "street"=> array (
     "name"=> 'B' 
    ) 
    ), 
); 

function sortByName($a, $b) { 
    return strcmp($a["street"]["name"], $b["street"]["name"]); 
} 

usort($cities, 'sortByName'); 

?> 

https://eval.in/586734

+0

Dank Knospe, aber eines der Probleme ist, das Array, das ich gerade gezeigt habe, ist nicht die ganze Sache, Es ist nur ein Teil des Arrays, die ich wirklich interessiert. :( –

+0

Aber wenn Sie die gleiche Prozedur befolgen, sollte dies funktionieren. –

+0

hmm. Wenn Sie sehen können, gibt es eine "Wildcard" zwischen ['city'] und ['street'] und das ist die Sache, die ich überwinden muss. ( –

Verwandte Themen