Если в функции get_full_city я в место return вывожу print_r то все верно выводит как и задумано. Но мне нужно не вывести, в готовые массивы собрать в один и работать с ним после foreach. Но если я ставлю return, то он отдает мне null. В момент else у меня массив собран и все эти собранные готовые массивы мне нужно как то получить после foreach, но как не могу понять, return в else отдает null.
class SearchController extends Controller
{
//
public function input(Request $request)
{
// В таблице все города и тут мы ищем до последнего родителя
$city = $request->input('city');
$arr = LocName::where('NAME', 'like', '%'.$city.'%')->take(10)->get(); // Выбераем все совпадения
$full_arr = array();
function get_full_city($one, $full_arr)
{
$loc_id = $one->LOCATION_ID; // Получили ИД города
$location = DB::table('location')->where('ID', $loc_id)->first(); // Список родителя и прочего
$name_arr = DB::table('loc_name')->where('LANGUAGE_ID', 'ru')->where('LOCATION_ID', $location->ID)->first();
$name = $name_arr->NAME;
$parent = $location->PARENT_ID;
$type_id = $location->TYPE_ID;
$type = DB::table('loc_type_name')->where('TYPE_ID', $type_id)->where('LANGUAGE_ID', 'ru')->first();
$full_arr[] = array(
'name' => $name,
'type' => $type->NAME,
);
echo ">>>".$location->DEPTH_LEVEL.PHP_EOL;
if($location->DEPTH_LEVEL > 1) // Если не главный родитель то продолжаем
{
$par_ar = DB::table('loc_name')->where('LANGUAGE_ID', 'ru')->where('LOCATION_ID', $parent)->first();
get_full_city($par_ar, $full_arr); // Отправляем на следующий круг
}
else {
// И тут если постепить print_r($full_arr) То все верно выводится по списку, то-есть когда достигаем главного родителя, то выводим, но мне нужно все собрать в массив и я пробую вернуть ретурном
return $full_arr;
}
}
foreach ($arr as $one)
{
$data[] = get_full_city($one, $full_arr);
}
И в итоге значения массива null, хотя если в функции вместо ретурна ставить вывод, то он правильно выводит.
dd($data);
}
}