אתה לא מגדר מערך ARRAY... הפונקציה array_merge ממזגת 2 מערכים לאחד, ומה שאתה עושה זה שאת ממזג מערך עם כלום.
המערך שאתה מנסה למזג ($r) לא קיים, שים לב שהצבת תנאי:
קוד:
if (...)
$r = XXX;
elseif (...)
$r = YYY;
else
$r = array_merge(get_premissions_array($value),$r);
המערך $r לא נוצר לעולם,כי לא כול להיות שגם התנאי הראשון וגם השלישי מתקיימים, והמערך הה מודר רק בתנאי הראשון, כשי אליו קריאה במערך השלישי.