Использование значений array_count_ в цикле foreach

#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 атрибут в a lt;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;