Отвечая конкретно на вопрос, закрыв глаза на
return false; die;
, на то, что
!isset($summa)
у тебя всегда будет
false
, на то, что делаешь велосипед, причём очень кривой с квадратными колёсами:
if(false === Arr($arr)) echo 'определенная строка';
По-хорошему, стоило бы сначала проверить, является ли выражение массивом, потом проверить значения в массиве — являются ли они числами, если не массив или в значениях не числа, то вернуть строку, иначе — значение
array_sum($arr)
. Проверить массив можно функцией array_filter() или обойти массив foreach, проверяя значение функцией
is_numeric()
(если пойдет и int, и float, и число в строке, типа '123')... Воот, кратко так. Но можно сделать ещё лучше, а писать мне уже лень. Могу лишь дополнить: сделать так, чтобы $arr у тебя был всегда массивом и контролировать, что ты туда пишешь.