-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、 ) などに基づいて並べ替えたいと思います。sAを使用して独自の選択並べ替えの種類の並べ替え方法を作成することを考えまし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 に答える