Привет! Как подсчитать количество едициц в выведеном результате: Например, чтоб в выдаче получилось: - синий - синий - зеленый - желтый - зеленый - зеленый - красный Итог: Синий: 2 Желтый: 1 Зеленый: 3 Красный: 1 Серый: 0 Код (PHP): $sql = mysql_query("SELECT * FROM `baza_orderov` AS bo WHERE bo.`timestamp` BETWEEN {$d3} AND {$d4} ORDER BY `order_id` $sort_by", $link); while ($result = mysql_fetch_array($sql)) { $color= $result['color']; ........ }
все цвета запихнуть в массив где ключ это цвет а значение это счетчик итерируя результат запроса делать инкремент нужного ключа в массиве
и тут вылетает ошибка Fatal error: Call to undefined function fetch() in и в какое место это подставить?
а это метаязык. знаком с таким? можно программу на русском описать, можно на английском, можно на метаязыке. в данном случае я использовал мету для ускорения написания ответа. ты уже сам должен додумать что из этого должно быть заменено и на какие конструкции языка пхп.
к сожалению я не программист... я психолог. я попросил помощи, показать как это сделать. Додумать не получится по причине отсутствия необходимых знаний.
понятно... вот тебе мод твоего кода. Код (PHP): $colorstat = array(); // поскольку я программист а не экстрасенс то я не знаю какие там у тебя цвета. поэтому вообще не инициализую значений. $sql = mysql_query("SELECT * FROM `baza_orderov` AS bo WHERE bo.`timestamp` BETWEEN {$d3} AND {$d4} ORDER BY `order_id` $sort_by", $link); while ($result = mysql_fetch_array($sql)) { if(!isset($colorstat[$result['color']])){$colorstat[$result]['color']]=0;} // налету записываю ноль в стату цвета ибо он впервые встретился $colorstat[$result['color']]++; // инкремент значения по текущему цвету $color= $result['color']; три строки добавлено, ноль изменено.
Native http://php.ru/manual/function.array-count-values.html Т.е. можно собрать в массив и сразу посчитать. Код проще чуток. Памяти больше чуток.
покажи, плиз, как это должно работать с одним полем из множества строк результата запроса к субд. или ты предлагаешь цвет просто в массив пушить а потом стату один раз посчитать?
никак Но при выводе можно забить нулями и смержить с этой функцией. Тоже одна строка. Ибо есть функция для набивки массива.
Warning: Illegal offset type in Вылетает ошибка: Parse error: syntax error, unexpected ']' in .... ...если убрать скобку {$colorstat[$result]['color']=0;} то вылетает ошибка Warning: Illegal offset type in ... А значения можно использовать такие. $colorstat = array('red'=>0, 'green' => 0, 'blue'=>0); как это победить?
Главное что php номер строчки показывает где ошибку нашёл. Он бы её показал и пару строчек с верху и снизу.
а ну да, очепятался в объявлении нулевого значения, да. бывает. снегопад такой на улице - торопился пойти гулять
дабы не быть голословным: Данные: Код (PHP): $arr = [ ['color' => 'a'], ['color' => 'b'], ['color' => 'c'], ['color' => ''], ['color' => 'a'], ['color' => 'b'], ['color' => 'b'], ['color' => ''], ['color' => 'a'], ['color' => 'c'], ['color' => 'c'], ['color' => 'a'], ['color' => 'b'], ['color' => 'a'], ['color' => 'c'], ['color' => ''], ['color' => 'a'], ]; Алгоритм: Код (PHP): $colors = ['a', 'b', 'c', 'd', 'e', 'f',]; $count = []; foreach ($arr as $result) { $count[] = $result['color']; } $count = array_merge(array_fill_keys($colors, 0), array_count_values($count)); var_dump($count); Результат: Код (Text): array (size=7) 'a' => int 6 'b' => int 4 'c' => int 4 'd' => int 0 'e' => int 0 'f' => int 0 '' => int 3
Доброе утро! извините, не мог вчера ответить... Пока что не получилось понять как запустить это без ошибок... второй вариант тоже с ошибкой .... если собрать всё в один файл: Код (PHP): <?php $arr = [ ['color' => 'a'], ['color' => 'b'], ['color' => 'c'], ['color' => ''], ['color' => 'a'], ['color' => 'b'], ['color' => 'b'], ['color' => ''], ['color' => 'a'], ['color' => 'c'], ['color' => 'c'], ['color' => 'a'], ['color' => 'b'], ['color' => 'a'], ['color' => 'c'], ['color' => ''], ['color' => 'a'], ]; $colors = ['a', 'b', 'c', 'd', 'e', 'f',]; $count = []; foreach ($arr as $result) { $count[] = $result['color']; } $count = array_merge(array_fill_keys($colors, 0), array_count_values($count)); var_dump($count); ?> то вылетает ошибка Parse error: syntax error, unexpected '[' in /home/users1/mydomen.ru/test.php on line 3 В общем вопрос пока ещё актуален...
А почему ты не хочешь прочитать вдумчиво одну книгу по php и mysql для того чтобы понимать основы и самому исправлять ошибки?