Как сгруппировать массив?

365
02 сентября 2017, 00:14

Всем хорошего настроения. Помогите несчастному сгруппировать такой массив.

array(9) { 
  [0]=> 
  array(1) { 
    ["level_1"]=> 
    array(28) { 
      [0]=> 
      string(1) "8" 
      ["id"]=> 
      string(1) "8" 
      [1]=> 
      string(6) "Vka124" 
      ["login"]=> 
      string(6) "Vka124" 
      [2]=> 
      string(6) "Vka124" 
      ["password"]=> 
      string(6) "Vka124" 
      [3]=> 
      string(15) "Vka124@gmail.ru" 
      ["email"]=> 
      string(15) "Vka124@gmail.ru" 
      [4]=> 
      string(19) "2017-08-25 13:38:45" 
      ["regdate"]=> 
      string(19) "2017-08-25 13:38:45" 
      [5]=> 
      string(1) "0" 
      ["status"]=> 
      string(1) "0" 
      [6]=> 
      string(19) "0000-00-00 00:00:00" 
      ["last_visit"]=> 
      string(19) "0000-00-00 00:00:00" 
      [7]=> 
      string(1) "7" 
      ["referrer"]=> 
      string(1) "7" 
      [8]=> 
      string(0) "" 
      ["avatar"]=> 
      string(0) "" 
      [9]=> 
      string(0) "" 
      ["link_vk"]=> 
      string(0) "" 
      [10]=> 
      string(0) "" 
      ["skype_login"]=> 
      string(0) "" 
      [11]=> 
      string(0) "" 
      ["youtube_link"]=> 
      string(0) "" 
      [12]=> 
      string(0) "" 
      ["email_contakt"]=> 
      string(0) "" 
      [13]=> 
      string(0) "" 
      ["perfect_purse"]=> 
      string(0) "" 
    } 
  } 
  [1]=> 
  array(1) { 
    ["level_1"]=> 
    array(28) { 
      [0]=> 
      string(1) "9" 
      ["id"]=> 
      string(1) "9" 
      [1]=> 
      string(8) "balon777" 
      ["login"]=> 
      string(8) "balon777" 
      [2]=> 
      string(8) "balon777" 
      ["password"]=> 
      string(8) "balon777" 
      [3]=> 
      string(18) "balon777@gmail.com" 
      ["email"]=> 
      string(18) "balon777@gmail.com" 
      [4]=> 
      string(19) "2017-08-25 13:39:24" 
      ["regdate"]=> 
      string(19) "2017-08-25 13:39:24" 
      [5]=> 
      string(1) "0" 
      ["status"]=> 
      string(1) "0" 
      [6]=> 
      string(19) "0000-00-00 00:00:00" 
      ["last_visit"]=> 
      string(19) "0000-00-00 00:00:00" 
      [7]=> 
      string(1) "7" 
      ["referrer"]=> 
      string(1) "7" 
      [8]=> 
      string(0) "" 
      ["avatar"]=> 
      string(0) "" 
      [9]=> 
      string(0) "" 
      ["link_vk"]=> 
      string(0) "" 
      [10]=> 
      string(0) "" 
      ["skype_login"]=> 
      string(0) "" 
      [11]=> 
      string(0) "" 
      ["youtube_link"]=> 
      string(0) "" 
      [12]=> 
      string(0) "" 
      ["email_contakt"]=> 
      string(0) "" 
      [13]=> 
      string(0) "" 
      ["perfect_purse"]=> 
      string(0) "" 
    } 
  } 
  [2]=> 
  array(1) { 
    ["level_1"]=> 
    array(28) { 
      [0]=> 
      string(2) "10" 
      ["id"]=> 
      string(2) "10" 
      [1]=> 
      string(6) "pamir2" 
      ["login"]=> 
      string(6) "pamir2" 
      [2]=> 
      string(5) "pamir" 
      ["password"]=> 
      string(5) "pamir" 
      [3]=> 
      string(15) "pamir2@pamir.ru" 
      ["email"]=> 
      string(15) "pamir2@pamir.ru" 
      [4]=> 
      string(19) "2017-08-30 14:14:55" 
      ["regdate"]=> 
      string(19) "2017-08-30 14:14:55" 
      [5]=> 
      string(1) "3" 
      ["status"]=> 
      string(1) "3" 
      [6]=> 
      string(19) "2017-08-30 14:15:00" 
      ["last_visit"]=> 
      string(19) "2017-08-30 14:15:00" 
      [7]=> 
      string(1) "7" 
      ["referrer"]=> 
      string(1) "7" 
      [8]=> 
      string(38) "../avatar/pamir2-20170830142301848.jpg" 
      ["avatar"]=> 
      string(38) "../avatar/pamir2-20170830142301848.jpg" 
      [9]=> 
      string(0) "" 
      ["link_vk"]=> 
      string(0) "" 
      [10]=> 
      string(0) "" 
      ["skype_login"]=> 
      string(0) "" 
      [11]=> 
      string(0) "" 
      ["youtube_link"]=> 
      string(0) "" 
      [12]=> 
      string(0) "" 
      ["email_contakt"]=> 
      string(0) "" 
      [13]=> 
      string(0) "" 
      ["perfect_purse"]=> 
      string(0) "" 
    } 
  } 
  [3]=> 
  array(1) { 
    ["level_2"]=> 
    array(28) { 
      [0]=> 
      string(1) "3" 
      ["id"]=> 
      string(1) "3" 
      [1]=> 
      string(7) "mansari" 
      ["login"]=> 
      string(7) "mansari" 
      [2]=> 
      string(6) "123456" 
      ["password"]=> 
      string(6) "123456" 
      [3]=> 
      string(16) "mansari@gmail.ru" 
      ["email"]=> 
      string(16) "mansari@gmail.ru" 
      [4]=> 
      string(19) "0000-00-00 00:00:00" 
      ["regdate"]=> 
      string(19) "0000-00-00 00:00:00" 
      [5]=> 
      string(1) "0" 
      ["status"]=> 
      string(1) "0" 
      [6]=> 
      string(19) "0000-00-00 00:00:00" 
      ["last_visit"]=> 
      string(19) "0000-00-00 00:00:00" 
      [7]=> 
      string(2) "10" 
      ["referrer"]=> 
      string(2) "10" 
      [8]=> 
      string(0) "" 
      ["avatar"]=> 
      string(0) "" 
      [9]=> 
      string(0) "" 
      ["link_vk"]=> 
      string(0) "" 
      [10]=> 
      string(0) "" 
      ["skype_login"]=> 
      string(0) "" 
      [11]=> 
      string(0) "" 
      ["youtube_link"]=> 
      string(0) "" 
      [12]=> 
      string(0) "" 
      ["email_contakt"]=> 
      string(0) "" 
      [13]=> 
      string(0) "" 
      ["perfect_purse"]=> 
      string(0) "" 
    } 
  } 
  [4]=> 
  array(1) { 
    ["level_3"]=> 
    array(28) { 
      [0]=> 
      string(2) "11" 
      ["id"]=> 
      string(2) "11" 
      [1]=> 
      string(6) "tester" 
      ["login"]=> 
      string(6) "tester" 
      [2]=> 
      string(6) "tester" 
      ["password"]=> 
      string(6) "tester" 
      [3]=> 
      string(20) "tester@tester.tester" 
      ["email"]=> 
      string(20) "tester@tester.tester" 
      [4]=> 
      string(19) "2017-08-30 18:41:02" 
      ["regdate"]=> 
      string(19) "2017-08-30 18:41:02" 
      [5]=> 
      string(1) "0" 
      ["status"]=> 
      string(1) "0" 
      [6]=> 
      string(19) "0000-00-00 00:00:00" 
      ["last_visit"]=> 
      string(19) "0000-00-00 00:00:00" 
      [7]=> 
      string(1) "3" 
      ["referrer"]=> 
      string(1) "3" 
      [8]=> 
      string(0) "" 
      ["avatar"]=> 
      string(0) "" 
      [9]=> 
      string(0) "" 
      ["link_vk"]=> 
      string(0) "" 
      [10]=> 
      string(0) "" 
      ["skype_login"]=> 
      string(0) "" 
      [11]=> 
      string(0) "" 
      ["youtube_link"]=> 
      string(0) "" 
      [12]=> 
      string(0) "" 
      ["email_contakt"]=> 
      string(0) "" 
      [13]=> 
      string(0) "" 
      ["perfect_purse"]=> 
      string(0) "" 
    } 
  } 
  [5]=> 
  array(1) { 
    ["level_4"]=> 
    array(28) { 
      [0]=> 
      string(2) "12" 
      ["id"]=> 
      string(2) "12" 
      [1]=> 
      string(8) "devtools" 
      ["login"]=> 
      string(8) "devtools" 
      [2]=> 
      string(8) "devtools" 
      ["password"]=> 
      string(8) "devtools" 
      [3]=> 
      string(20) "devtools@devtools.ru" 
      ["email"]=> 
      string(20) "devtools@devtools.ru" 
      [4]=> 
      string(19) "2017-08-30 18:42:00" 
      ["regdate"]=> 
      string(19) "2017-08-30 18:42:00" 
      [5]=> 
      string(1) "0" 
      ["status"]=> 
      string(1) "0" 
      [6]=> 
      string(19) "0000-00-00 00:00:00" 
      ["last_visit"]=> 
      string(19) "0000-00-00 00:00:00" 
      [7]=> 
      string(2) "11" 
      ["referrer"]=> 
      string(2) "11" 
      [8]=> 
      string(0) "" 
      ["avatar"]=> 
      string(0) "" 
      [9]=> 
      string(0) "" 
      ["link_vk"]=> 
      string(0) "" 
      [10]=> 
      string(0) "" 
      ["skype_login"]=> 
      string(0) "" 
      [11]=> 
      string(0) "" 
      ["youtube_link"]=> 
      string(0) "" 
      [12]=> 
      string(0) "" 
      ["email_contakt"]=> 
      string(0) "" 
      [13]=> 
      string(0) "" 
      ["perfect_purse"]=> 
      string(0) "" 
    } 
  } 
  [6]=> 
  array(1) { 
    ["level_5"]=> 
    array(28) { 
      [0]=> 
      string(2) "13" 
      ["id"]=> 
      string(2) "13" 
      [1]=> 
      string(9) "kalibrius" 
      ["login"]=> 
      string(9) "kalibrius" 
      [2]=> 
      string(9) "kalibrius" 
      ["password"]=> 
      string(9) "kalibrius" 
      [3]=> 
      string(23) "kalibrius@kalibrius.com" 
      ["email"]=> 
      string(23) "kalibrius@kalibrius.com" 
      [4]=> 
      string(19) "2017-08-30 18:43:35" 
      ["regdate"]=> 
      string(19) "2017-08-30 18:43:35" 
      [5]=> 
      string(1) "0" 
      ["status"]=> 
      string(1) "0" 
      [6]=> 
      string(19) "0000-00-00 00:00:00" 
      ["last_visit"]=> 
      string(19) "0000-00-00 00:00:00" 
      [7]=> 
      string(2) "12" 
      ["referrer"]=> 
      string(2) "12" 
      [8]=> 
      string(0) "" 
      ["avatar"]=> 
      string(0) "" 
      [9]=> 
      string(0) "" 
      ["link_vk"]=> 
      string(0) "" 
      [10]=> 
      string(0) "" 
      ["skype_login"]=> 
      string(0) "" 
      [11]=> 
      string(0) "" 
      ["youtube_link"]=> 
      string(0) "" 
      [12]=> 
      string(0) "" 
      ["email_contakt"]=> 
      string(0) "" 
      [13]=> 
      string(0) "" 
      ["perfect_purse"]=> 
      string(0) "" 
    } 
  } 
  [7]=> 
  array(1) { 
    ["level_4"]=> 
    array(28) { 
      [0]=> 
      string(2) "15" 
      ["id"]=> 
      string(2) "15" 
      [1]=> 
      string(6) "bagdat" 
      ["login"]=> 
      string(6) "bagdat" 
      [2]=> 
      string(6) "bagdat" 
      ["password"]=> 
      string(6) "bagdat" 
      [3]=> 
      string(14) "bagdat@mail.ru" 
      ["email"]=> 
      string(14) "bagdat@mail.ru" 
      [4]=> 
      string(19) "2017-08-30 18:52:52" 
      ["regdate"]=> 
      string(19) "2017-08-30 18:52:52" 
      [5]=> 
      string(1) "0" 
      ["status"]=> 
      string(1) "0" 
      [6]=> 
      string(19) "0000-00-00 00:00:00" 
      ["last_visit"]=> 
      string(19) "0000-00-00 00:00:00" 
      [7]=> 
      string(2) "11" 
      ["referrer"]=> 
      string(2) "11" 
      [8]=> 
      string(0) "" 
      ["avatar"]=> 
      string(0) "" 
      [9]=> 
      string(0) "" 
      ["link_vk"]=> 
      string(0) "" 
      [10]=> 
      string(0) "" 
      ["skype_login"]=> 
      string(0) "" 
      [11]=> 
      string(0) "" 
      ["youtube_link"]=> 
      string(0) "" 
      [12]=> 
      string(0) "" 
      ["email_contakt"]=> 
      string(0) "" 
      [13]=> 
      string(0) "" 
      ["perfect_purse"]=> 
      string(0) "" 
    } 
  } 
  [8]=> 
  array(1) { 
    ["level_1"]=> 
    array(28) { 
      [0]=> 
      string(2) "16" 
      ["id"]=> 
      string(2) "16" 
      [1]=> 
      string(9) "raketa099" 
      ["login"]=> 
      string(9) "raketa099" 
      [2]=> 
      string(9) "raketa099" 
      ["password"]=> 
      string(9) "raketa099" 
      [3]=> 
      string(17) "raketa099@mail.ru" 
      ["email"]=> 
      string(17) "raketa099@mail.ru" 
      [4]=> 
      string(19) "2017-08-30 23:01:57" 
      ["regdate"]=> 
      string(19) "2017-08-30 23:01:57" 
      [5]=> 
      string(1) "0" 
      ["status"]=> 
      string(1) "0" 
      [6]=> 
      string(19) "0000-00-00 00:00:00" 
      ["last_visit"]=> 
      string(19) "0000-00-00 00:00:00" 
      [7]=> 
      string(1) "7" 
      ["referrer"]=> 
      string(1) "7" 
      [8]=> 
      string(0) "" 
      ["avatar"]=> 
      string(0) "" 
      [9]=> 
      string(0) "" 
      ["link_vk"]=> 
      string(0) "" 
      [10]=> 
      string(0) "" 
      ["skype_login"]=> 
      string(0) "" 
      [11]=> 
      string(0) "" 
      ["youtube_link"]=> 
      string(0) "" 
      [12]=> 
      string(0) "" 
      ["email_contakt"]=> 
      string(0) "" 
      [13]=> 
      string(0) "" 
      ["perfect_purse"]=> 
      string(0) "" 
    } 
  } 
}

Нужно чтобы можно было обратиться к обьекту по level_ например как то так

echo $array["level_1"][0]["login"]

В массив level_1, level_2 и так далее у меня попадают пользователи. Вот мне и нужно сгруппировать массив таким образом, чтобы я мог вытащить информацию по человеку который в массиве, например, level_1

Заранее благодарю за помощь.

Answer 1

Если учесть, что в вашем $array[$idx] может быть только один элемент level_X, то решение может быть, например, следующим:

Исходные данные:

$data = [
    0 => [ "level_1" => ['login' => 'test-1-1']],
    1 => [ "level_1" => ['login' => 'test-1-2']],
    2 => [ "level_2" => ['login' => 'test-2-1']],
];

Преобразование:

$result = [];
foreach($data as $v){
     $result[key($v)][] = current($v);
}
print_r($result);

В таком случае функции key() и current() изначально указывают на первый и единственный элемент level_* в массиве.
Если по какой-то причине вам не нравится использование цикла, то можете использовать функцию array_walk для обхода массива, но сути это не меняет:

$result2 = [];
array_walk($data, function($v) use (&$result2){ $result2[key($v)][] = current($v);});
print_r($result2);
READ ALSO
PHP скрипт грузит сайт

PHP скрипт грузит сайт

Как найти кусок кода, который грузит сайтСайт стоит на joomla

307
Opencart 2 ocMod - выпадающий список категорий

Opencart 2 ocMod - выпадающий список категорий

Подскажите, у меня есть код который должен выводить выпадающий список(dropdown list) категорий в сайдбаре, потом подкатегорий и так далееЯ его засунул...

402
setcookie session не работает на смартфонах (php)

setcookie session не работает на смартфонах (php)

Здравствуйте, есть код:

281
При парсинге на одинаковых тегах часть данных пропадает

При парсинге на одинаковых тегах часть данных пропадает

Делаю задание по парсингу данных со специального сайта с крайне непонятным движком внутриНовость выводится в своем теге(он всегда одинаков),...

322