Есть ли функция php
, которая возвращает количество раз, когда элемент повторяется в array
?. Если нет, мне придется перебирать каждый элемент и использовать счетчик, чтобы увидеть, сколько раз он повторяется.
Что-то в этом роде, вроде функции count()
, которая имеет Python
. Результатом этой программы будет 2, так как единица присутствует дважды в файле array
.
с функцией
array_count_values
Вам дан ответ сколько число и сколько раз оно повторяется
Я вижу два варианта, что бы не было проблем с поиском значений с запятыми или кавычками.
Первым вариантом будет тот, который упоминается @sioesi и @alvaro-montoro , поскольку он родной, он, вероятно, очень быстрый . В этом случае вы должны быть осторожны, потому что если значение не существует, вы не сможете его найти:
Но да, если вас интересует сравнение одного значения, это создает в памяти массив с одним элементом для каждого уникального значения. Например,
array(1,2,3,4,5,6,7,8,9,10,1)
длина 11 элементов дает еще 10 элементов:С такими суммами не должно быть проблем, но если вы имеете дело с длинными массивами, они могут потреблять много памяти, потому что вы создаете один и тот же размер.
Вместо этого, если вы пытаетесь подсчитать одно значение, проще пройтись по массиву и сравнить каждое значение, используя
foreach
. Вы можете сделать это в одну строку (2 инструкции), если уверены, что$a
это массив:$i=0;foreach($a as $v) if($buscado===$v) $i++;
Если вы хотите это как функцию, вы можете сделать следующее:
Таким образом, он должен быть более эффективным в управлении памятью, поскольку создает только числовую переменную.
Не существует функции, которая возвращает точное количество раз появления определенного значения, но вы можете использовать эту функцию
array_count_values
, чтобы подсчитать, сколько раз появляются все данные в массиве.Оттуда вы можете создать свою собственную функцию:
Хотя я предполагаю, что если вам не нужно считать более одного элемента, это может быть немного чрезмерным.
Попробуй это:
По сути, мы передаем массив в строку, а затем substr_count() делает всю работу за нас, вы увидите, что вывод равен «3», потому что слово «друг» появляется в вашем массиве три раза.
ОСТЕРЕГАЙТЕСЬ, что
'amigo,'
равный элемент будет добавляться+1
к$count
, так как он имеет запятую в конце, но вы не хотите считать его, потому что это элемент, отличный от элемента «друг», который не имеет запятой.Обратите внимание, что это может быть неэффективным с точки зрения использования памяти, если вы обрабатываете большие объемы данных (вы копируете все данные в строку).