PHP проблема сортировки многомерного массива - PullRequest
0 голосов
/ 06 августа 2020

вот как выглядит мой массив:

array(2) {
  'yamaha' =>
  array(2) {
    'r1' =>
    array(3) {
      [0] =>
      string(4) "2000"
      [1] =>
      string(4) "2001"
      [2] =>
      string(4) "1999"
    }
    'r2' =>
    array(1) {
      [0] =>
      string(4) "2000"
    }
  }
  'honda' =>
  array(3) {
    'ca-125' =>
    array(2) {
      [0] =>
      string(4) "1996"
      [1] =>
      string(4) "1995"
    }
    'cb-1000-r' =>
    array(4) {
      [0] =>
      string(4) "1993"
      [1] =>
      string(4) "1994"
      [2] =>
      string(4) "1995"
      [3] =>
      string(4) "1996"
    }
    'cb-1000-a' =>
    array(6) {
      [0] =>
      string(4) "2008"
      [1] =>
      string(4) "2009"
      [2] =>
      string(4) "2010"
      [3] =>
      string(4) "2011"
      [4] =>
      string(4) "2012"
      [5] =>
      string(4) "2013"
    }
  }
}

Я хотел бы отсортировать его по алфавиту. Если я сделаю asort($myarray). Он будет отсортирован по первому ключу. Так что получу хонду и ямаху. Это правильно, но я хотел бы также отсортировать его по типу бренда: cb-1000-r и cb-1000-a (в алфавитном порядке) и год в порядке убывания. Может кто-то помочь мне с этим ? Спасибо

[ОБНОВЛЕНИЕ] Это мой json. вы можете использовать json_decode

 {"B":{"r2":["1999","2001","2000"],"r1":["2000"]},"A":{"A1":["1996","1995"],"A3":["1993","1994","1995","1996"],"A2":["2008","2009","2010","2011","2012","2013"]}}

, и я хотел бы получить это json:

 {"A":{"r1":["2000"],"r2":["2001","2000","1999"]},"B":{"A1":["1996","1995"],"A2":["2013","2012","2011","2010","2009","2008"],"A3":["1996","1995","1994","1993"]}}

1 Ответ

1 голос
/ 06 августа 2020

Вам нужно l oop через ваши вложенные массивы и отсортировать каждый из них:

$arr = json_decode('{"B":{"r2":["1999","2001","2000"],"r1":["2000"]},"A":{"A1":["1996","1995"],"A3":["1993","1994","1995","1996"],"A2":["2008","2009","2010","2011","2012","2013"]}}', true);

ksort($arr);

foreach ($arr as &$arr1) {
    ksort($arr1);
    
    foreach ($arr1 as &$arr2) {
        rsort($arr2);
    }
}

var_dump($arr);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...