Отсортировать массив php по одному значению, и разбить на несколько других массивов

Есть массив

$arr = array(
    array('Вася','Пупкин'),
    array('Миша','Пупкин'),
    array('Николай','Смирнов'),
    array('Иван','Пупкин'),
    array('Костик','Смирнов'),  
    array('Никита','Кораблёв'),
    ...
    array(...)
);

Как рассортировать его пофамильно? То есть, чтобы все Пупкины были в массиве $arr1, все Смирновы в $arr2, а все фамилия в массиве $arrN?

Фамилии встречаются разные, и в единый массив их следует определять только если фамилия полностью совпадает.

P.S. Можно считать, что там только мужские фамилии, т.е. нет фамилии "Анна Пупкина" с женским окончанием. На имена внимания тоже можно не обращать. Это все для упрощения примера.


Ответы (1 шт):

Автор решения: Dmitry
$arr = array(
    array('Вася','Пупкин'),
    array('Миша','Пупкин'),
    array('Николай','Смирнов'),
    array('Иван','Пупкин'),
    array('Костик','Смирнов'),  
    array('Никита','Кораблёв')
);

$res = [];
foreach ($arr as $item) {
    $res[$item[1]][] = $item;
}

$res = array_values($res);
→ Ссылка