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
Форумы портала PHP.SU :: Версия для печати :: непонятня штука с функциеи glob()
Форумы портала PHP.SU » » Вопросы новичков » непонятня штука с функциеи glob()

Страниц (1): [1]
 

1. dadli - 14 Августа, 2012 - 14:52:24 - перейти к сообщению
какаято непонятня штука с функциеи glob(). есть пустая директоря, сделаю так

PHP:
скопировать код в буфер обмена
  1. $mas = glob("адрес к дректорие *");
  2. var_dump($mas);
  3. echo sizeof($mas);



var_dump виведит: bool(false)
echo sizeof виведит 1, можете сказать в чом может бить дело ?
2. EuGen - 14 Августа, 2012 - 14:54:26 - перейти к сообщению
dadli
Все верно. Это происходит потому как sizeof ожидает массив или Countable-объект в качестве аргумента. И, стало быть, аргумент приводится к типу array - вот и выходит, что вызов аналогичен sizeof(array(false)) - то есть размер равен 1.
При этом не следует думать, что происходит явное приведение типов (то есть, передав, к примеру, два аргумента, Вы не получите результатом 2). Исключение составляет также null - для него будет возвращен 0.
Есть, правда, оговорка для объектов, которые реализуют Countable - но это не Ваш случай.
3. dadli - 14 Августа, 2012 - 15:19:03 - перейти к сообщению
EuGen
спасибо понятно, а как можно из sizeof(array(false)) получить 0 ? то есть как получить из таково масива, реалное количество елементов?
4. EuGen - 14 Августа, 2012 - 15:27:02 - перейти к сообщению
dadli
Так реальное количество его элементов и есть 1. Если нужно получить количество элементов, не равных false, то это другая задача. Пример её решения:
PHP:
скопировать код в буфер обмена
  1. $rgNil  = array(false, 0, '', null);
  2. $rgData = array(7, true, "foo", -1, 6.9, false, "\n", "", 0);
  3. var_dump(count($rgData), count(array_diff($rgData, $rgNil)));

Но если речь идет о count, которому передан не-массив, то там всегда будет 1 (или 0 для null)
5. dadli - 14 Августа, 2012 - 23:20:15 - перейти к сообщению
EuGen

спасибо балшое.

 

Powered by ExBB FM 1.0 RC1