Есть фот такая функция: PHP: private function hierarchy($array, $name, &$event_and_sit) { $i = $j = $k = $l =0; foreach ($array as $arr) { if ($arr['place'] == 'mine') { $event_and_sit[$arr['obj_id']][$name][$i]['id'] = $arr['id']; $event_and_sit[$arr['obj_id']][$name][$i]['title'] = $arr['title']; $event_and_sit[$arr['obj_id']][$name][$i]['status'] = $arr['status']; $event_and_sit[$arr['obj_id']][$name][$i]['date_start'] = $arr['date_start']; $i++; } if ($arr['place'] == 'face') { foreach ($event_and_sit as $key=>$value) { if (isset($value['faces'][$arr['obj_id']])) { $value['faces'][$arr['obj_id']][$name][$j]['id'] = $arr['id']; $value['faces'][$arr['obj_id']][$name][$j]['title'] = $arr['title']; $value['faces'][$arr['obj_id']][$name][$j]['status'] = $arr['status']; $value['faces'][$arr['obj_id']][$name][$j]['date_start'] = $arr['date_start']; $j++; break; } } } if ($arr['place'] == 'ex') { foreach ($event_and_sit as $key=>$value) { foreach ($value['faces'] as $kk=>$vv) { if (isset($vv['exs'][$arr['obj_id']])) { $vv['exs'][$arr['obj_id']][$name][$k]['id'] = $arr['id']; $vv['exs'][$arr['obj_id']][$name][$k]['title'] = $arr['title']; $vv['exs'][$arr['obj_id']][$name][$k]['status'] = $arr['status']; $vv['exs'][$arr['obj_id']][$name][$k]['date_start'] = $arr['date_start']; $k++; break 2; } } } } if ($arr['place'] == 'eq') { foreach ($event_and_sit as $key=>$value) { foreach ($value['faces'] as $kk=>$vv) { if (isset($vv['eqs'][$arr['obj_id']])) { $vv['eqs'][$arr['obj_id']][$name][$l]['id'] = $arr['id']; $vv['eqs'][$arr['obj_id']][$name][$l]['title'] = $arr['title']; $vv['eqs'][$arr['obj_id']][$name][$l]['status'] = $arr['status']; $vv['eqs'][$arr['obj_id']][$name][$l]['date_start'] = $arr['date_start']; $l++; break 2; } } } } } return $event_and_sit; } Вызов и передача параметров следующим образом: PHP: $event_and_sit = $this->hierarchy($fact_evs, 'events', $event_and_sit); $event_and_sit = $this->hierarchy($fact_sts, 'situations', $event_and_sit); При этом массив $event_and_sit вот такого вида: Код (Text): array(3) { [1]=> array(3) { ["id"]=> int(1) ["title"]=> string(10) "Название 1" ["faces"]=> array(2) { [1]=> array(2) { ["title"]=> string(6) "ПЗ-6" ["exs"]=> array(2) { [1]=> string(6) "ВШ-1" [10]=> string(7) "ВШ-10" } } [2]=> array(3) { ["title"]=> string(7) "ОЗ-12" ["exs"]=> array(2) { [2]=> string(6) "ВШ-2" [7]=> string(6) "ВШ-7" } ["eqs"]=> array(2) { [1]=> string(7) "СР-70" [2]=> string(15) "КРУВ-6 №2" } } } } [2]=> array(3) { ["id"]=> int(2) ["title"]=> string(10) "Название 2" ["faces"]=> array(2) { [3]=> array(2) { ["title"]=> string(8) "ПЗ-123" ["exs"]=> array(2) { [3]=> string(6) "ВШ-3" [9]=> string(6) "ВШ-9" } } [4]=> array(3) { ["title"]=> string(8) "ОЗ-211" ["exs"]=> array(1) { [6]=> string(6) "ВШ-6" } ["eqs"]=> array(3) { [3]=> string(3) "Joy" [4]=> string(5) "Shatl" [5]=> string(15) "КРУВ-6 №1" } } } } [3]=> array(3) { ["id"]=> int(3) ["title"]=> string(10) "Название 3" ["faces"]=> array(2) { [5]=> array(2) { ["title"]=> string(7) "ПЗ-18" ["exs"]=> array(2) { [4]=> string(6) "ВШ-4" [8]=> string(6) "ВШ-8" } } [6]=> array(3) { ["title"]=> string(8) "ОЗ-128" ["exs"]=> array(1) { [5]=> string(6) "ВШ-5" } ["eqs"]=> array(1) { [6]=> string(8) "2ЛТ-80" } } } } } Первые 2 if'а для mine и face проходит нормально, на последние ругается. Проблема в строчке $vv['exs'][$arr['obj_id']][$name][$k]['id'] = $arr['id']: Cannot use assign-op operators with string offsets Illegal string offset 'events'
Разобралась. Проблема была в том, что иных ключей в массиве $event_and_sit...['faces'][$arr['obj_id']] нет. Там было записано сразу значение. Как я поняла, из-за этого возникал конфликт в виде того, что записываю я четко по ключу, но так как там хранилось сразу значение, он выдавал ошибку. Очень корявое объяснение, но как-то так. Решилось тем, что я добавила туда ключ ['title'] и тогда по ключу $name стал спокойно записывать значения.