Побегал по пхп-сайту - не нашел примеров, но, может, кто сталкивался и знает как определить наличие массива в данный момент? суть такая:
Используя различные условия подгружаю инклюдами различные настройки (массивы), которые нужно проверить на наличие: какой массив в данный момент загружен или отсутствует. Самый простой способ - создать сначала все пустые массивы перед их подгрузкой и проверять пустые они или нет.
Функции isset() и empty() работают только с переменными (не массивами), функция is_array() проверяет только тип загруженной переменной - массив она или нет, пустая функция if ($arr) {} в случае массива (а не переменной) выдает сообщение об ошибке:
Цитата:
Notice: Undefined variable: $arr in /home/xxx/data/www/site.ru/engin e/modules/islemap/blocks.php on line xxx
вариант подсчета массива, типа:
if (count($arr)) {}
и подобные выдают ошибку (при включенных ошибках).
Пробовал различные варианты, но все комбинации функций всё равно выводят ошибку "андефайн". Неужели обязательно нужно сначала создать пустые массивы, загрузить их из кеша и проверить их на "нулл" после загрузки?
Как вариант единственной проверки, которая пришла на ум, - сначала взять первый ключ массива функцией
$key = array_shift($arr);
, если он взят и переменная получена
if (isset($key)) {
echo 'Массив загружен';
} else echo 'Массив не существует';
, то проверяем этот ключ далее на "пустоту" (null). Такой метод кажется весьма громоздким для такой простой задачи Может, есть вариант попроще?
П.С. Для включение ошибок использовал (и без "собак" перед переменными):
error_reporting(E_ALL);
ini_set('display_errors',TRUE);
ini_set('display_startup_errors',TRUE);
set_error_handler('my_error_handler',E_ALL);
(Добавление)
О, капец, не догадался, блин. Всё, сделал так:
if (isset($ism) && is_array($ism)) echo 1; else echo 2;
ошибка исчезла
А вот так ранее делал и ошибка была:
if (is_array(isset($ism))) echo 1; else echo 2;
Топик можно закрыть или удалить.
(Добавление)
М... странно, все равно ошибки лезут. Эх, вдруг кому из еовичков понадобится Лучший вариант, который смог методом научного тыка найти, вот...
Вариант не прокатывает:
if (!@is_array($arr) && $arr!=null) {}
А вот так всё ок:
if (!@count($arr)) {}
Ну всё, удачи всем, пока.