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 :: Версия для печати :: почему count() всегда возврвщает 1??
Форумы портала PHP.SU » » Вопросы новичков » почему count() всегда возврвщает 1??

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

1. Bio man - 10 Ноября, 2011 - 21:22:42 - перейти к сообщению
Спойлер (Отобразить)


конвертируем и экранируем $_GET и $_POST.

затем создаем объект.
проверяем скока свойств в объекте count($data->getGetObj())
возвращает 1 всегда, даже если их 0 или 10
я в замешательстве
2. Данил_123 - 10 Ноября, 2011 - 21:33:44 - перейти к сообщению
cout вроде должна выдовать количество, а не значение..
3. White - 10 Ноября, 2011 - 21:36:07 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. public function getGetObj() {
  2.   foreach($this->GET as $i=>$v) settype($this->GET[$i], 'object');
  3.   return $this->GET;
  4. }


а если так?
4. ALEN - 10 Ноября, 2011 - 21:48:56 - перейти к сообщению
Ты из массива делаешь объект и что дальше считаешь?
5. Bio man - 10 Ноября, 2011 - 23:37:05 - перейти к сообщению
ALEN пишет:
Ты из массива делаешь объект и что дальше считаешь?
дальше считаю свойства возвращенные методом. Например к свойству можно обратится так $data->getgetobj()->property
(Добавление)
White пишет:
PHP:
скопировать код в буфер обмена
  1. public function getGetObj() {
  2.   foreach($this->GET as $i=>$v) settype($this->GET[$i], 'object');
  3.   return $this->GET;
  4. }


а если так?
а разве в таком случае каждый элемент массива не будес щитатся объектом класса stdclass? Каунт считает свойства а не объекты. Или я в чем то ошибся?
(Добавление)
Данил_123 пишет:
cout вроде должна выдовать количество, а не значение..
мда, видимо ты плохо си учил, простебал ответ. Каунт вернет значение (целое) в котором и будет количество
6. OrmaJever - 11 Ноября, 2011 - 00:31:22 - перейти к сообщению
Bio man напиши

а потом пойми что count считает только масивы.
7. Мелкий - 11 Ноября, 2011 - 07:54:59 - перейти к сообщению
Bio man пишет:
возвращает 1 всегда, даже если их 0 или 10

Bio man пишет:
settype($this->POST, 'object');

Чтобы count возвращал осмысленное значение для объекта, объект обязан реализовывать интерфейс countable http://nl.php.net/manual/en/class.countable.php

stdclass же, естественно, не реализует этот интерфейс, что count считает за 1.
8. White - 11 Ноября, 2011 - 14:21:21 - перейти к сообщению
Bio man да правильно, $this->GET[$i] будет объектом, но $this->GET останется массивом, который
Мелкий пишет:
реализовывать интерфейс countable

т.е. на выходе получим массив объектов или пустой массив, вы же его пытаетесь получить?
Bio man пишет:
Каунт считает свойства а не объекты

может вы это хотели:
PHP:
скопировать код в буфер обмена
  1. public function getGetObj() {
  2.   foreach($this->GET as $i=>$v) $this->getObj->$i=$v;
  3.   return $this->getObj;
  4. }

тогда хоть будут свойства которые считать.
9. Мелкий - 11 Ноября, 2011 - 14:33:28 - перейти к сообщению
White пишет:
тогда хоть будут свойства которые считать.

Не будет. Именно к этому виду settype($this->POST, 'object'); и приводит, можно var_dump'ом поглядеть..
10. Bio man - 11 Ноября, 2011 - 14:56:06 - перейти к сообщению
OrmaJever пишет:
а потом пойми что count считает только масивы.

http://php.su/functions/?count пишет:
count -- Посчитать количество элементов массива или количество свойств объекта

(Добавление)

Цитата:
object(stdClass)[8]
public 'r' => string '3' (length=1)
public 'page' => string '2' (length=1)

(Добавление)
как реализовать интерфейс Countable? то есть что писать в public function count(){}???
11. Мелкий - 11 Ноября, 2011 - 19:31:10 - перейти к сообщению
Bio man пишет:
то есть что писать в public function count(){}???

Всё, что угодно. Главное - чтобы возвращалось целое число.
12. Данил_123 - 11 Ноября, 2011 - 19:33:53 - перейти к сообщению
Bio man пишет:
мда, видимо ты плохо си учил, простебал ответ. Каунт вернет значение (целое) в котором и будет количество
причитайся..учу.. До этого еще не дошел, сравнил с mysql..
13. Bio man - 11 Ноября, 2011 - 22:34:47 - перейти к сообщению
Данил_123, базовый курс пхп - тема - типы данных. всего в пхп 8 типов данных : integer, string, boolean, NULL, array, object, resource. пхп (ф-ции) по сути всегда возвращает тип данных с каким то содержанием (кроме NULL), что и является значением.
Цитата:
cout вроде должна выдовать количество,
согласен
Цитата:
а не значение..
не согласен Улыбка
14. Мелкий - 11 Ноября, 2011 - 22:44:50 - перейти к сообщению
Bio man пишет:
всего в пхп 8 типов данных : integer, string, boolean, NULL, array, object, resource.

А назвал только 7 Подмигивание float пропустил.
15. Bio man - 11 Ноября, 2011 - 23:38:38 - перейти к сообщению
Мелкий пишет:
Bio man пишет:
всего в пхп 8 типов данных : integer, string, boolean, NULL, array, object, resource.

А назвал только 7 Подмигивание float пропустил.

блин, точно. я просто был маленько не в адеквате, посчитал, показалось 8 Радость

 

Powered by ExBB FM 1.0 RC1