使用键在php中对多维数组进行排序

时间:2013-10-29 15:03:01

标签: php arrays sorting

我有一个多维数组,如:

[
   {
      "C":[
         {
            "status":"0",
            "num":"3223"
         },
         {
            "status":"1",
            "num":"45186"
         },
         {
            "status":"2",
            "num":"8310"
         },
         {
            "status":"3",
            "num":"82"
         }
      ]
   },
   {
      "F":[
         {
            "status":"0",
            "num":"1506"
         },
         {
            "status":"1",
            "num":"31253"
         },
         {
            "status":"2",
            "num":"1660"
         },
         {
            "status":"5",
            "num":"1017"
         }
      ]
   },
   {
      "A":[
         {
            "status":"0",
            "num":"1506"
         },
         {
            "status":"1",
            "num":"31253"
         },
         {
            "status":"2",
            "num":"1660"
         },
         {
            "status":"5",
            "num":"1017"
         }
      ]
   },
]

我想根据键(CFA)等对此进行排序。我考虑使用{{1}编写自己的选择排序方法} s,但我相信这不是一个很好的方法。我也可以使用foreachksort(),但不确定如何。

我不需要任何人为我编写整个代码,我将非常感谢有关如何对这样的数组进行排序的最佳方法的指导。

上面的字符串实际上是数组的usort()转储。

以下是json_encode()

var_dump()

以上的漂亮照片

array(6) { [0] => array(1) { 'C' => array(8) { [0] => array(2) { ... } [1] => array(2) { ... } [2] => array(2) { ... } [3] => array(2) { ... } [4] => array(2) { ... } [5] => array(2) { ... } [6] => array(2) { ... } [7] => array(2) { ... } } } [1] => array(1) { 'F' => array(8) { [0] => array(2) { ... } [1] => array(2) { ... } [2] => array(2) { ... } [3] => array(2) { ... } [4] => array(2) { ... } [5] => array(2) { ... } [6] => array(2) { ... } [7] => array(2) { ... } } } [2] => array(1) { 'A' => array(8) { [0] => array(2) { ... } [1] => array(2) { ... } [2] => array(2) { ... } [3] => array(2) { ... } [4] => array(2) { ... } [5] => array(2) { ... } [6] => array(2) { ... } [7] => array(2) { ... } } } [3] => array(1) { 'D' => array(8) { [0] => array(2) { ... } [1] => array(2) { ... } [2] => array(2) { ... } [3] => array(2) { ... } [4] => array(2) { ... } [5] => array(2) { ... } [6] => array(2) { ... } [7] => array(2) { ... } } } [4] => array(1) { 'E' => array(8) { [0] => array(2) { ... } [1] => array(2) { ... } [2] => array(2) { ... } [3] => array(2) { ... } [4] => array(2) { ... } [5] => array(2) { ... } [6] => array(2) { ... } [7] => array(2) { ... } } } [5] => array(1) { 'B' => array(8) { [0] => array(2) { ... } [1] => array(2) { ... } [2] => array(2) { ... } [3] => array(2) { ... } [4] => array(2) { ... } [5] => array(2) { ... } [6] => array(2) { ... } [7] => array(2) { ... } } }}

1 个答案:

答案 0 :(得分:1)

以下是我如何实现这一目标。可能有更好的方法,但我们需要在内存中创建一个新的数组,使用alpha字符作为实际键(基本上我们正在删除我们不需要的父数组)。然后我们使用kso​​rt实际排序数组。

<?php 
$test = array(
    array("a" => array("status" =>1, "blah" => 2)),
    array("f" => array("status" =>1, "blah" => 2)),
    array("c" => array("status" =>1, "blah" => 2)),
    array("b" => array("status" =>1, "blah" => 2)),
    array("z" => array("status" =>1, "blah" => 2))
);
foreach($test as $key=>$val){
    foreach($val as $key2=>$val2){
        $newTest[$key2] = $val2;
    }
}
echo '<pre>';
var_dump($test);
ksort($newTest);
var_dump($newTest);
echo '</pre>';
?>