У меня есть массив, ниже которого мне нужно разбить на меньшие массивы на основе ключа [location] (так что мне нужен массив .co.uk и массив .com). Клавиша [location] не ограничена .co.uk или .com.
Любая помощь приветствуется.
[22] => Array ( [query] => tttt [location] => .co.uk [x] => 1292889600 [y] => 1 [fullurl] => http://www.tttt.com/ ) [20] => Array ( [query] => tttt [location] => .co.uk [x] => 1292976000 [y] => 1 [fullurl] => http://www.tttt.com/ ) [21] => Array ( [query] => tttt [location] => .com [x] => 1292976000 [y] => 1 [fullurl] => http://www.tttt.com/ ) [19] => Array ( [query] => tttt [location] => .co.uk [x] => 1293062400 [y] => 1 [fullurl] => http://www.tttt.com/ ) [18] => Array ( [query] => tttt [location] => .com [x] => 1293062400 [y] => 1 [fullurl] => http://www.tttt.com/ ) [17] => Array ( [query] => tttt [location] => .co.uk [x] => 1293148800 [y] => 1 [fullurl] => http://www.tttt.com/ ) [16] => Array ( [query] => tttt [location] => .com [x] => 1293148800 [y] => 1 [fullurl] => http://www.tttt.com/ ) [14] => Array ( [query] => tttt [location] => .com [x] => 1293235200 [y] => 1 [fullurl] => http://www.tttt.com/ )
Вы можете сделать это:
$byLocation = array(); foreach ($arr as $key => $item) { if (!isset($byLocation[$item['location']])) { $byLocation[$item['location']] = array(); } $byLocation[$item['location']][$key] = $item; }
Тогда, например, $byLocation['.co.uk'][22]
– это первый элемент вашего исходного массива. Если вы не хотите поддерживать оригинальный ключ, просто опустите его и используйте вместо него []
.
Я бы подумал, что вам просто нужно перебирать массив следующим образом:
Проверьте, известно ли текущее «местоположение» (array_key_exists) в массиве $ domains. Если он не добавляет его. ( $domains[<current key>] = array();
)
Добавьте текущие данные в новый массив под соответствующим ключом местоположения в массиве $ domains. ( array_push($domains[<current key>], array('query'=>XXX, 'x'=>...));
)