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 :: почему count() всегда возврвщает 1??

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: object
Bio man
Отправлено: 10 Ноября, 2011 - 21:22:42
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 52 раз(а)




Спойлер (Отобразить)


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

затем создаем объект.
проверяем скока свойств в объекте count($data->getGetObj())
возвращает 1 всегда, даже если их 0 или 10
я в замешательстве
 
 Top
Данил_123
Отправлено: 10 Ноября, 2011 - 21:33:44
Post Id


Участник


Покинул форум
Сообщений всего: 1026
Дата рег-ции: Июнь 2011  
Откуда: rostov


Помог: 9 раз(а)




cout вроде должна выдовать количество, а не значение..


-----
http://mysitecost.ru
 
 Top
White
Отправлено: 10 Ноября, 2011 - 21:36:07
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 830
Дата рег-ции: Июнь 2011  
Откуда: Днепропетровск


Помог: 28 раз(а)




PHP:
скопировать код в буфер обмена
  1. public function getGetObj() {
  2.   foreach($this->GET as $i=>$v) settype($this->GET[$i], 'object');
  3.   return $this->GET;
  4. }


а если так?


-----
if(time()>1356048000) die();
 
 Top
ALEN
Отправлено: 10 Ноября, 2011 - 21:48:56
Post Id



Участник


Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008  
Откуда: Крым


Помог: 11 раз(а)




Ты из массива делаешь объект и что дальше считаешь?
 
 Top
Bio man
Отправлено: 10 Ноября, 2011 - 23:37:05
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 52 раз(а)




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 вроде должна выдовать количество, а не значение..
мда, видимо ты плохо си учил, простебал ответ. Каунт вернет значение (целое) в котором и будет количество
 
 Top
OrmaJever Модератор
Отправлено: 11 Ноября, 2011 - 00:31:22
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




Bio man напиши

а потом пойми что count считает только масивы.


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Мелкий Супермодератор
Отправлено: 11 Ноября, 2011 - 07:54:59
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




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.


-----
PostgreSQL DBA
 
 Top
White
Отправлено: 11 Ноября, 2011 - 14:21:21
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 830
Дата рег-ции: Июнь 2011  
Откуда: Днепропетровск


Помог: 28 раз(а)




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. }

тогда хоть будут свойства которые считать.

(Отредактировано автором: 11 Ноября, 2011 - 14:21:56)



-----
if(time()>1356048000) die();
 
 Top
Мелкий Супермодератор
Отправлено: 11 Ноября, 2011 - 14:33:28
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




White пишет:
тогда хоть будут свойства которые считать.

Не будет. Именно к этому виду settype($this->POST, 'object'); и приводит, можно var_dump'ом поглядеть..


-----
PostgreSQL DBA
 
 Top
Bio man
Отправлено: 11 Ноября, 2011 - 14:56:06
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 52 раз(а)




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(){}???
 
 Top
Мелкий Супермодератор
Отправлено: 11 Ноября, 2011 - 19:31:10
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Bio man пишет:
то есть что писать в public function count(){}???

Всё, что угодно. Главное - чтобы возвращалось целое число.


-----
PostgreSQL DBA
 
 Top
Данил_123
Отправлено: 11 Ноября, 2011 - 19:33:53
Post Id


Участник


Покинул форум
Сообщений всего: 1026
Дата рег-ции: Июнь 2011  
Откуда: rostov


Помог: 9 раз(а)




Bio man пишет:
мда, видимо ты плохо си учил, простебал ответ. Каунт вернет значение (целое) в котором и будет количество
причитайся..учу.. До этого еще не дошел, сравнил с mysql..


-----
http://mysitecost.ru
 
 Top
Bio man
Отправлено: 11 Ноября, 2011 - 22:34:47
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 52 раз(а)




Данил_123, базовый курс пхп - тема - типы данных. всего в пхп 8 типов данных : integer, string, boolean, NULL, array, object, resource. пхп (ф-ции) по сути всегда возвращает тип данных с каким то содержанием (кроме NULL), что и является значением.
Цитата:
cout вроде должна выдовать количество,
согласен
Цитата:
а не значение..
не согласен Улыбка
 
 Top
Мелкий Супермодератор
Отправлено: 11 Ноября, 2011 - 22:44:50
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Bio man пишет:
всего в пхп 8 типов данных : integer, string, boolean, NULL, array, object, resource.

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


-----
PostgreSQL DBA
 
 Top
Bio man
Отправлено: 11 Ноября, 2011 - 23:38:38
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 52 раз(а)




Мелкий пишет:
Bio man пишет:
всего в пхп 8 типов данных : integer, string, boolean, NULL, array, object, resource.

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

блин, точно. я просто был маленько не в адеквате, посчитал, показалось 8 Радость
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB