#php
Вопрос:
Я хотел бы получить образец вывода, как показано ниже.
1: 2 события
2: 3 события
3: 2 события
4: 1 возникновение
5: 1 случайность
7: 1 случай
количество вхождений зависит от ввода пользователем в формате формы. Ниже приведен Html-код, который я использую для ввода пользователем номера.
lt;!DOCTYPE htmlgt; lt;htmlgt; lt;stylegt; h1{ text-align:center; } form{ text-align:center; margin:auto; border-style: solid; width:700px; height:250px; } lt;/stylegt; lt;bodygt; lt;form action="page2" method="get"gt; lt;h1gt;Algorithm Calculatorlt;/h1gt; lt;label for="fname"gt;Enter Number with Comma lt;brgt; eg: 1,2,3,4,4,5,5,7lt;/labelgt;lt;brgt;lt;brgt; lt;input type="text" id="number" name="number"gt;lt;brgt; lt;brgt; lt;input type="submit" value="Confirm"gt; lt;/formgt; lt;/bodygt; lt;/htmlgt;
Код на второй странице
lt;?php $number=$_GET['number']; $result = array(); $result = explode(',',$number); foreach ($result as $value){ echo "$value = ".array_count_values($result) [$value]." occurrences lt;brgt;"; } ?gt;
Я хочу, чтобы мой код повторялся только один раз, но он повторяется несколько раз, если пользователь дважды вводит одно и то же число. Ниже приведен мой вывод.
1 = 1 случай
2 = 1 случай
3 = 1 случай
4 = 2 случая
4 = 2 вхождения (я не хочу, чтобы это повторялось дважды)
Комментарии:
1. Вы можете сделать это без цикла, это похоже на правильный ответ, который вам нужен
$occurences = array_count_values($result);
2. Несвязанный к вашему сведению:
for
атрибут в alt;labelgt;
должен указывать наid
то , что вашnumber
, а неfname
Ответ №1:
Вам нужно будет обработать пользовательский ввод, прежде чем входить в свой цикл.
$result = explode(',',$number); foreach (array_unique($result) as $value){ echo "$value = ".array_count_values($result) [$value]." occurrences lt;brgt;"; }
Вы сохраните только уникальные значения в своем массиве, поэтому вы будете выполнять цикл только один раз для каждого значения.
Ответ №2:
array_count_values
функция предоставляет уникальные элементы в массиве в качестве ключей, а также предоставляет количество вхождений в качестве значений в массиве. Таким образом, решение может быть таким, как указано ниже:
lt;?php $number=$_GET['number']; $result = array(); $result = explode(',',$number); foreach (array_count_values($result) as $key =gt; $value) { echo "{$key} = {$value} occurrences lt;br /gt;"; } ?gt;
Ответ №3:
Зацикливайтесь на результате a array_count_values()
и его легко.
$number='9,9,4,4,22,22,22'; $result = explode(',',$number); print_r(array_count_values($result)); foreach(array_count_values($result) as $n=gt;$occ) { echo "$n = $occ occurrences lt;br /gt;" . PHP_EOL; }
Результат
array_count_value()
Создается массив, в котором ключом являются подсчитываемые числа, а значением-вхождения чисел
Array ( [9] =gt; 2 [4] =gt; 2 [22] =gt; 3 )
Таким образом, результат будет
9 = 2 occurrences lt;br /gt; 4 = 2 occurrences lt;br /gt; 22 = 3 occurrences lt;br /gt;