php: количество раз, когда строка появляется в массиве mySql

* edit * Я задал этот вопрос как вопрос php без тега mySql (который был добавлен другим членом SO --> для меня это не имеет большого значения, а просто говорит). Я извиняюсь за путаницу, связанную с включением «посторонних»? подробно, что массив был из запроса mySql!

Я надеюсь сохранить запрошенные данные из SELECT * для циклического использования PHP в массиве. Я подумал, что для простоты этого кода PHP может подсчитывать, сколько раз строка встречается в определенной позиции в массиве. * / изменить *

Я хотел бы узнать, сколько раз строка появляется в определенном столбце из результата запроса mySql.

Например, скажем, у меня есть таблица «автомобили», и в этой таблице есть столбец «тип». Столбец «тип» имеет такие значения, как «седан», «фургон», «внедорожник» и т. д.

Если я запрашиваю все из таблицы следующим образом:

$query = "SELECT *
            FROM automobiles";

а затем вставьте запрошенные значения в массив:

$the_array = mysql_fetch_array($query);

а затем попробуйте количественно определить, сколько раз строка встречается следующим образом:

$count = array_count_values($the_array);
print_r($count);

это не только не работает, но и данные будут неточными, поскольку значения будут основываться на всей таблице, а не только на столбце «тип» автомобиля.


person superUntitled    schedule 03.07.2011    source источник
comment
Хммм, минусы за простой вопрос?   -  person Sean    schedule 03.07.2011
comment
@superUntitled Эх, я бы сказал, что это здесь. Это довольно просто, но каждый должен с чего-то начинать...   -  person ceejayoz    schedule 03.07.2011
comment
Спасибо всем за вашу помощь. Я думаю, что понимаю возможности функции mySql COUNT(), а также функции php php_num_rows(). Я хотел бы использовать все данные в запрошенной таблице (отсюда «SELECT *»), так как я хотел бы вернуть эти данные в цикле while(){}. Я думаю, что php сможет подсчитать, сколько раз строка появляется в определенной позиции массива.   -  person superUntitled    schedule 03.07.2011
comment
упс, кажется, я задал вопрос, выходящий за рамки сообщества переполнения стека. Как этот вопрос не связан с программированием? Было бы неплохо, если бы минусующие дали мне знать, чтобы я мог лучше служить этому сообществу в будущем.   -  person superUntitled    schedule 03.07.2011


Ответы (3)


Вы можете сделать это с помощью простой агрегации SQL:

SELECT type, COUNT(*) FROM automobiles GROUP BY type
person sagi    schedule 03.07.2011

или ты можешь пойти

$query = ("SELECT * FROM automobiles WHERE type='TYPE'");
$total_count = mysql_num_rows($query);
echo $total_count;
person rackemup420    schedule 03.07.2011
comment
Не очень весело, когда у тебя есть пара десятков (или миллионов) типов. - person ceejayoz; 03.07.2011
comment
затем установите переменную для просмотра только по одному за раз. - person rackemup420; 03.07.2011
comment
Что касается вашего теперь удаленного комментария, это не было моим детским отрицательным голосом. - person ceejayoz; 03.07.2011
comment
Я не говорил, что это твой, потому что, когда я писал свой комментарий, твоего там не было. извините, что я чувствую, что это были вы. моя вина. - person rackemup420; 03.07.2011

person    schedule
comment
спасибо за ваш сайт ceejayoz! однако это вернет только значения COUNTed, а не остальные данные в таблице. Мой вопрос касался подсчета строки в массиве php. - person superUntitled; 03.07.2011