Я хочу сделать оператор if / else в PHP, который опирается на элемент в массиве, существующий более одного раза или нет. Можете ли вы использовать count in in_array? сделать что-то вроде:
if (count(in_array($itemno_array))) > 1 { EXECUTE CODE }
Пусть $ item – элемент, частота которого вы проверяете в массиве, $ array – массив, в котором вы ищете.
РЕШЕНИЕ 1:
$array_count = array_count_values($array); if (array_key_exists($item, $array_count) && ($array_count["$item"] > 1)) { /* Execute code */ }
array_count_values () возвращает массив, используя значения входного массива в качестве ключей и их частоту во вводе как значения ( http://php.net/manual/en/function.array-count-values.php )
РЕШЕНИЕ 2:
if (count(array_keys($array, $item)) > 1) { /* Execute code */ }
Проверьте это http://www.php.net/manual/en/function.array-keys.php – «Если указана опция поиска_значения, то возвращаются только ключи для этого значения»
Посмотрите на array_count_values()
.
http://www.php.net/manual/en/function.array-keys.php
in_array возвращает bool, поэтому вы не можете считать это. array_keys, однако, возвращает массив всех ключей для элемента в массиве, поэтому проверка длины этого результата даст вам, существует ли он более одного раза или нет.
Возможно, я неправильно понял ваш вопрос, но, возможно, это то, что вы сделали:
if ( count($in_array) > count(array_unique($in_array)) ) { EXECUTE CODE }