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 :: как подсчитать количество значений в массиве с условием

 PHP.SU

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


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

> Описание: count()
algebra
Отправлено: 19 Октября, 2016 - 15:50:03
Post Id



Частый гость


Покинул форум
Сообщений всего: 171
Дата рег-ции: Февр. 2011  


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




PHP:
скопировать код в буфер обмена
  1. $race_now = mysql_fetch_array(mysql_query("SELECT racer1,racer2,racer3, racer4, racer5, racer6, racer7, racer8, racer9, racer10 FROM races WHERE c_down > 0"));
  2.  
  3. $t = count($race_now>0);//кол-во гонщиков
  4. echo $t; //выводит 1, а не 4, почему?
  5. print_r ($race_now);//выводит Array ( [0] => 863 [racer1] => 863 [1] => 3671 [racer2] => 3671 [2] => 0 [racer3] => 0 [3] => 0 [racer4] => 0 [4] => 0 [racer5] => 0 [5] => 0 [racer6] => 0 [6] => 0 [racer7] => 0 [7] => 0 [racer8] => 0 [8] => 0 [racer9] => 0 [9] => 0 [racer10] => 0 ) ...  и почему-то значения в массиве задвоены
 
 Top
Мелкий Супермодератор
Отправлено: 19 Октября, 2016 - 16:12:17
Post Id



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


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


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




Я думал тут хотя бы E_NOTICE будет, но нет. Тихо мирно 1, всё согласно мануалу.

Короче говоря, зачем вы пытаетесь вызвать count для булева значения? Оператор > возвращает булево значение.


-----
PostgreSQL DBA
 
 Top
Fart
Отправлено: 19 Октября, 2016 - 16:22:23
Post Id



Посетитель


Покинул форум
Сообщений всего: 324
Дата рег-ции: Июль 2016  


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




Уже задано условие в запросе > 0
Далее mysql_num_rows
 
 Top
algebra
Отправлено: 19 Октября, 2016 - 16:36:11
Post Id



Частый гость


Покинул форум
Сообщений всего: 171
Дата рег-ции: Февр. 2011  


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




Нужно вывести кол-во racer значение которых больше 0. В запросе c_down>0 совсем не об этом.

(Отредактировано автором: 19 Октября, 2016 - 16:36:53)

 
 Top
Fart
Отправлено: 19 Октября, 2016 - 16:40:37
Post Id



Посетитель


Покинул форум
Сообщений всего: 324
Дата рег-ции: Июль 2016  


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




Задайте это в запросе
 
 Top
algebra
Отправлено: 19 Октября, 2016 - 16:44:33
Post Id



Частый гость


Покинул форум
Сообщений всего: 171
Дата рег-ции: Февр. 2011  


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




Напишите пожалуйста как
 
 Top
Fart
Отправлено: 19 Октября, 2016 - 16:55:54
Post Id



Посетитель


Покинул форум
Сообщений всего: 324
Дата рег-ции: Июль 2016  


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




Рабочий запрос сейчас не могу (чуть позже если) , но если сами захотите то копайте count , group или я бы попросил товарища Мелкий в этом вопросе. Если честно не силён в идеальных sql запросах
 
 Top
Мелкий Супермодератор
Отправлено: 19 Октября, 2016 - 17:08:40
Post Id



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


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


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




Тупо пройтись foreach'ом и посчитать значения > 0.

На sql тоже можно, писать только много. Была бы нормально таблица развёрнута - было бы элементарно. Для mysql достаточно
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT (racer1 > 0) + (racer2 > 0) + ...

Будет циферка в результате.


-----
PostgreSQL DBA
 
 Top
algebra
Отправлено: 19 Октября, 2016 - 17:45:26
Post Id



Частый гость


Покинул форум
Сообщений всего: 171
Дата рег-ции: Февр. 2011  


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




Мелкий пишет:
Тупо пройтись foreach'ом и посчитать значения > 0.

На sql тоже можно, писать только много. Была бы нормально таблица развёрнута - было бы элементарно. Для mysql достаточно
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT (racer1 > 0) + (racer2 > 0) + ...

Будет циферка в результате.


Не много. И работает. Благодарю!
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB