Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: непонятня штука с функциеи glob()
var_dump виведит: bool(false)
echo sizeof виведит 1, можете сказать в чом может бить дело ?
EuGen
Отправлено: 14 Августа, 2012 - 14:54:26
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
dadli
Все верно. Это происходит потому как sizeof ожидает массив или Countable-объект в качестве аргумента. И, стало быть, аргумент приводится к типу array - вот и выходит, что вызов аналогичен sizeof(array(false)) - то есть размер равен 1.
При этом не следует думать, что происходит явное приведение типов (то есть, передав, к примеру, два аргумента, Вы не получите результатом 2). Исключение составляет также null - для него будет возвращен 0.
Есть, правда, оговорка для объектов, которые реализуют Countable - но это не Ваш случай.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
dadli
Отправлено: 14 Августа, 2012 - 15:19:03
Посетитель
Покинул форум
Сообщений всего: 416
Дата рег-ции: Май 2011 Откуда: тифилис
Помог: 5 раз(а)
EuGen
спасибо понятно, а как можно из sizeof(array(false)) получить 0 ? то есть как получить из таково масива, реалное количество елементов?
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
dadli
Так реальное количество его элементов и есть 1. Если нужно получить количество элементов, не равных false, то это другая задача. Пример её решения:
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.