Есть функция, которая выводит категории начиная с самого верха:
function getFullCategoryName($strCategoryId, $arrCategories)
{
$strCategoryIdPaent = NULL;
$arrCategoryCurr = isset($arrCategories[$strCategoryId]) ? $arrCategories[$strCategoryId] : NULL;
$arrCategoriesNames = [];
while (is_array($arrCategoryCurr)) {
$arrCategoriesNames[] = $arrCategoryCurr['title'];
if ($arrCategoryCurr['parentId'] && isset($arrCategories[$arrCategoryCurr['parentId']])) {
$arrCategoryCurr = $arrCategories[$arrCategoryCurr['parentId']];
} else {
$arrCategoryCurr = NULL;
}
}
krsort($arrCategoriesNames);
return implode(' > ', $arrCategoriesNames);
}
Всего с 3 элементами массива я получаю сообщение об ошибке:
"Разрешенный размер памяти 134217728 байт исчерпан"
Я понимаю, что использую что-то не так. Пожалуйста, помогите мне понять, что именно.
Это мой входной массив:
$arrCategories = array (
193450 =>
array (
'id' => '193450',
'parentId' => '193450',
'title' => 'Blood glucose meter',
),
193451 =>
array (
'id' => '193451',
'parentId' => '193450',
'title' => 'Sugar test strips',
),
193452 =>
array (
'id' => '193452',
'parentId' => '193452',
'title' => 'Blood glucose meter',
),
);
Это вызов функции:
$strCategoryId = 193450;
getFullCategoryName($strCategoryId, $arrCategories);
else { $arrCategoryCurr = NULL; }
эта часть не срабатывает - person Shobi   schedule 20.05.2019NULL
на строку не проблема. Условиеelse
никогда не выполняется, поэтому$arrCategoryCurr
никогда не устанавливается вNULL
(или'NULL'
, или что-то еще), поэтомуis_array($arrCategoryCurr)
бесконечно остается истинным, поэтому цикл никогда не заканчивается. - person deceze♦   schedule 20.05.2019