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 :: Версия для печати :: как подсчитать количество значений в массиве с условием
Форумы портала PHP.SU » PHP » Напишите за меня, пожалуйста » как подсчитать количество значений в массиве с условием

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

1. algebra - 19 Октября, 2016 - 15:50:03 - перейти к сообщению
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 ) ...  и почему-то значения в массиве задвоены
2. Мелкий - 19 Октября, 2016 - 16:12:17 - перейти к сообщению
Я думал тут хотя бы E_NOTICE будет, но нет. Тихо мирно 1, всё согласно мануалу.

Короче говоря, зачем вы пытаетесь вызвать count для булева значения? Оператор > возвращает булево значение.
3. Fart - 19 Октября, 2016 - 16:22:23 - перейти к сообщению
Уже задано условие в запросе > 0
Далее mysql_num_rows
4. algebra - 19 Октября, 2016 - 16:36:11 - перейти к сообщению
Нужно вывести кол-во racer значение которых больше 0. В запросе c_down>0 совсем не об этом.
5. Fart - 19 Октября, 2016 - 16:40:37 - перейти к сообщению
Задайте это в запросе
6. algebra - 19 Октября, 2016 - 16:44:33 - перейти к сообщению
Напишите пожалуйста как
7. Fart - 19 Октября, 2016 - 16:55:54 - перейти к сообщению
Рабочий запрос сейчас не могу (чуть позже если) , но если сами захотите то копайте count , group или я бы попросил товарища Мелкий в этом вопросе. Если честно не силён в идеальных sql запросах
8. Мелкий - 19 Октября, 2016 - 17:08:40 - перейти к сообщению
Тупо пройтись foreach'ом и посчитать значения > 0.

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

Будет циферка в результате.
9. algebra - 19 Октября, 2016 - 17:45:26 - перейти к сообщению
Мелкий пишет:
Тупо пройтись foreach'ом и посчитать значения > 0.

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

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


Не много. И работает. Благодарю!

 

Powered by ExBB FM 1.0 RC1