У меня есть массив, содержащий массивы имен и других деталей, в алфавитном порядке. Каждый массив включает первую букву, связанную с именем.
Array ( [0] => Array ( [0] => a [1] => Alanis Morissette ) [1] => Array ( [0] => a [1] => Alesha Dixon ) [2] => Array ( [0] => a [1] => Alexandra Burke ) [3] => Array ( [0] => b [1] => Britney Spears ) [4] => Array ( [0] => b [1] => Bryan Adams ) )
Я бы хотел отобразить их сгруппированными по первому первому, например:
- Аланис Мориссетт Алеша Диксон Александра Берк В - Бритни Спирс Брайан Адамс и т.д...
Это вообще возможно?
Вы можете легко их сгруппировать, даже если они не отсортированы:
$groups=array(); foreach ($names as $name) { $groups[$name[0]][] = $name[1]; }
Вам даже не нужно сохранять первый файл, чтобы сгруппировать их:
$names = array( 'Alanis Morissette', 'Alesha Dixon', 'Alexandra Burke', 'Britney Spears', 'Bryan Adams', ... ); $groups=array(); foreach ($names as $name) { $groups[$name[0]][] = $name; }
Поскольку ваш массив уже отсортирован, вы можете просто прокрутить и проследить показанное последнее письмо. Когда это изменится, вы знаете, что находитесь на следующем письме.
$lastChar = ''; foreach($singers as $s) { if ($s[0] != $lastChar) echo "\n".$s[0]."\n - \n"; echo $s[1]."\n"; $lastChar = $s[0]; }