PHP Сортировка многомерного массива по первому ключу

я получил массив, как это:

array
'list_10' =>
array
row_0 =>
array
'Id' => string '118579'
'Status' => string '3'
row_1 =>
array
'Id' => string '117662'
'Status' => string '2'
row_2 =>
array
'Id' => string '117662'
'Status' => string '2'
'list_11' =>
array
row_0 =>
array
'Id' => string '112564'
'Status' => string '2'
row_1 =>
array
'Id' => string '153622'
'Status' => string '3'
row_2 =>
array
'Id' => string '112832'
'Status' => string '1'

я хочу «natsort» первый ключ «list_XX», чтобы он начинался с 0,1,2, .. вместо 10,11,12,13,0,1,2,3, …

я играл с array_multisort, но я не могу
установить правильные параметры, чтобы заставить его делать то, что я хочу, если он даже способен на это.

любой совет?

1

Решение

Предполагая, что ваш массив выглядит примерно так:

$array = [
'list_11' =>
[
'row_0' =>
[
'Id' =>  '118579',
'Status' =>  '3'
],
'row_1' =>
[
'Id' =>  '117662',
'Status' =>  '2'
],
'row_2' =>
[
'Id' =>  '117662',
'Status' =>  '2'
]
],
'list_10' =>
[
'row_0' =>
[
'Id' =>  '112564',
'Status' =>  '2'
],
'row_1' =>
[
'Id' =>  '153622',
'Status' =>  '3'
],
'row_2' =>
[
'Id' =>  '112832',
'Status' =>  '1'
]
],
'list_1' =>
[
'row_0' =>
[
'Id' =>  '32323232',
'Status' =>  '3'
],
'row_1' =>
[
'Id' =>  '2353333',
'Status' =>  '2'
],
'row_2' =>
[
'Id' =>  '117662',
'Status' =>  '2'
]
]
];

С помощью array_multisort :

$sort = [];
foreach($array as $el=>$val){
$sort[] = $el;
}
array_multisort($array,SORT_NUMERIC,$sort,SORT_NATURAL);
var_dump($array);

Распечатает:

array(3) {
["list_1"]=>
array(3) {
["row_0"]=>
array(2) {
["Id"]=>
string(8) "32323232"["Status"]=>
string(1) "3"}
["row_1"]=>
array(2) {
["Id"]=>
string(7) "2353333"["Status"]=>
string(1) "2"}
["row_2"]=>
array(2) {
["Id"]=>
string(6) "117662"["Status"]=>
string(1) "2"}
}
["list_10"]=>
array(3) {
["row_0"]=>
array(2) {
["Id"]=>
string(6) "112564"["Status"]=>
string(1) "2"}
["row_1"]=>
array(2) {
["Id"]=>
string(6) "153622"["Status"]=>
string(1) "3"}
["row_2"]=>
array(2) {
["Id"]=>
string(6) "112832"["Status"]=>
string(1) "1"}
}
["list_11"]=>
array(3) {
["row_0"]=>
array(2) {
["Id"]=>
string(6) "118579"["Status"]=>
string(1) "3"}
["row_1"]=>
array(2) {
["Id"]=>
string(6) "117662"["Status"]=>
string(1) "2"}
["row_2"]=>
array(2) {
["Id"]=>
string(6) "117662"["Status"]=>
string(1) "2"}
}
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]