-4

我有一个多维数组,例如:

[
   {
      "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"
         }
      ]
   },
]

我想根据键 ( C, F, A) 等对其进行排序。我考虑过使用 s 编写自己的选择排序类型的排序方法foreach,但我确信这不是一个很好的方法。我也可以使用ksort(), 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) { ... } } }}

以上是漂亮的印刷品

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) {
        ...
      }
    }
  }
}
4

1 回答 1

1

这是我如何做到这一点的。可能有更好的方法,但我们需要在内存中创建一个新数组,其中字母字符作为实际键(基本上我们正在删除我们不需要的父数组)。然后我们使用 ksort 对数组进行实际排序。

<?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>';
?>
于 2013-10-29T19:50:32.943 回答