Intereting Posts
Сохранение содержимого nicedit textarea в базе данных mysql Mysql, PDO – как инструкция не работает с помощью bindParam Символы UTF-8 в формате fwrite Как правильно добавить токен CSRF с помощью PHP CSS Minifier в PHP array_merge () Как добавить «диапазон» имени массива Как получить значение выбранного элемента внутри datalist в javascript? Простой XML – обращение с колонами в узлах Я пытаюсь вычеркнуть что-либо до '=', а также конкретные слова PDO «Необрученное исключение» PDOException ».. Невозможно выполнить запросы, в то время как другие небуферизованные запросы активны. Рассмотрим использование PDOStatement :: fetchAll (). " Как единый вход (SSO) работает с PHP + Apache в Active Directory для прозрачной проверки подлинности? Назначение параметров PHP Закрывает ли PHP файл после того, как обработчик файлов собран из мусора? Каков наилучший стандартный стиль для реализации toString? Матрица WordPress, чтобы показать сообщение из определенной категории и показать выдержку и описание

Считать количество значений в массиве с заданным значением

Скажем, у меня есть массив вроде этого:

$array = array('', '', 'other', '', 'other'); 

Как я могу подсчитать число с заданным значением (в примере пробел)?

И делать это эффективно? (около десятка массивов с сотнями элементов каждый). Этот пример времени (более 30 секунд):

 function without($array) { $counter = 0; for($i = 0, $e = count($array); $i < $e; $i++) { if(empty($array[$i])) { $counter += 1; } } return $counter; } 

В этом случае количество пустых элементов равно 3.

Как насчет использования array_count _values для получения массива со всем, что подсчитано для вас?

Просто идея, вы можете использовать array_keys( $myArray, "" ) используя необязательный второй параметр, который указывает значение поиска. Затем подсчитайте результат.

 $myArray = array( "","","other","","other" ); $length = count( array_keys( $myArray, "" )); 

Я не знаю, будет ли это быстрее, но это что-то попробовать:

 $counter = 0; foreach($array as $value) { if($value === '') $counter++; } echo $counter; 

Вы также можете попробовать array_reduce с функцией, которая просто подсчитает интересующее вас значение. Например

 function is_empty( $v, $w ) { return empty( $w ) ? ($v + 1) : $v; } array_reduce( $array, 'is_empty', 0 ); 

Некоторые бенчмаркинга могут сказать вам, если это быстрее, чем array_count_values ​​()

Мы используем функцию array_filter для определения количества значений в массиве

 $array=array('','','other','','other'); $filled_array=array_filter($array);// will return only filled values $count=count($filled_array); echo $count;// returns array count 

Обычно для подсчета пробелов. На самом деле это зависит от случая использования и скорости. Лично мне нравится делать что-то в одной строке.

Как и выбранный ответ, но вам все равно нужна строка для извлечения данных, необходимых, хотя и для другой переменной.

 $r = count($x) - count(array_filter($x)); 
 function countarray($array) { $count=count($array); return $count; } $test=$array = array('', '', 'other', '', 'other'); echo countarray($test); 
 function arrayvaluecount($array) { $counter = 0; foreach($array as $val){ list($v)=$val; if($v){ $counter =$counter+1; } } return $counter; }