На входе файл csv Код (Text): Иванов Иван Иванович;100;8-xxx-xxx-xx-xx;Руководство Петров Петр Алексеевич;101;8-xxx-xxx-xx-xx;Руководство Сидоров Петр Алексеевич;103;8-xxx-xxx-xx-xx;Сантехники Михайлов Станислав Сергеевич;122;8-xxx-xxx-xx-xx;Грузчики Осокин Михаил Александрович;111;8-xxx-xxx-xx-xx;Сантехники Михайлов Леонид Ильич;117;8-xxx-xxx-xx-xx;Руководство Леонидов Марк Арнольдович;124;8-xxx-xxx-xx-xx;Грузчики Начинаю его разбирать, группировать по отделам Код (Text): <?php $fn = $_POST['fn']; $x=file (__DIR__.'\\'.$fn); ///csv файл, разделенной запятыми if (empty($x)){ echo "Неверное имя файла"; die(); } $first = array(); foreach ($x as $i) { $val = explode (';', $i); $name = preg_replace('/[\s]{2,}/', ' ', trim($val[0]));////удаляет лишние пробелы снаружи и двойные пробелы внутри $phone1 = $val[1]; $phone2 = $val[2]; $dep = preg_replace('/[\s]{2,}/', ' ', trim($val[3])); ////удаляет лишние пробелы снаружи и двойные пробелы внутри $second = array(name=>$name,phone1=>$phone1, phone2=>$phone2, phone3=>"", default_photo=>""); //$dep - название отдела if (!array_key_exists($dep, $first)){ //если такого отдела в массиве нет, он его добавляет $first[$dep]=[$second]; } else{ array_push($first[$dep], //добавляет к текущему индексу доп массивы } } echo "<pre>"; var_dump($first); выдает вроде все правильно Код (Text): array(3) { ["Руководство"]=> array(3) { [0]=> array(5) { ["name"]=> string(41) "Иванов Иван Иванович" ["phone1"]=> string(3) "100" ["phone2"]=> string(15) "8-xxx-xxx-xx-xx" ["phone3"]=> string(0) "" ["default_photo"]=> string(0) "" } [1]=> array(5) { ["name"]=> string(42) "Петров Петр Алексеевич" ["phone1"]=> string(3) "101" ["phone2"]=> string(15) "8-xxx-xxx-xx-xx" ["phone3"]=> string(0) "" ["default_photo"]=> string(0) "" } [2]=> array(5) { ["name"]=> string(40) "Михайлов Леонид Ильич" ["phone1"]=> string(3) "117" ["phone2"]=> string(15) "8-xxx-xxx-xx-xx" ["phone3"]=> string(0) "" ["default_photo"]=> string(0) "" } } ["Сантехники"]=> array(2) { [0]=> array(5) { ["name"]=> string(44) "Сидоров Петр Алексеевич" ["phone1"]=> string(3) "103" ["phone2"]=> string(15) "8-xxx-xxx-xx-xx" ["phone3"]=> string(0) "" ["default_photo"]=> string(0) "" } [1]=> array(5) { ["name"]=> string(52) "Осокин Михаил Александрович" ["phone1"]=> string(3) "111" ["phone2"]=> string(15) "8-xxx-xxx-xx-xx" ["phone3"]=> string(0) "" ["default_photo"]=> string(0) "" } } ["Грузчики"]=> array(2) { [0]=> array(5) { ["name"]=> string(54) "Михайлов Станислав Сергеевич" ["phone1"]=> string(3) "122" ["phone2"]=> string(15) "8-xxx-xxx-xx-xx" ["phone3"]=> string(0) "" ["default_photo"]=> string(0) "" } [1]=> array(5) { ["name"]=> string(48) "Леонидов Марк Арнольдович" ["phone1"]=> string(3) "124" ["phone2"]=> string(15) "8-xxx-xxx-xx-xx" ["phone3"]=> string(0) "" ["default_photo"]=> string(0) "" } } } при прогоне циклом по массиву Код (Text): foreach ($first as $keyf ) { echo $keyf; } выдает ключ = array не могу понять, как получить в цикле ключи "руководство, сантехники, грузчики"... Заранее спасибо
Что непонятно? Первая - форма одновременного перебора и ключей и значений, см. доки по foreach. Второе - функция, которая извлекает одни ключи из массива.