Подтвердить что ты не робот

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

Скажем, у меня есть такой массив:

$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.

4b9b3361

Ответ 1

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

Ответ 2

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

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

Ответ 3

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

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

Ответ 4

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

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

array_reduce( $array, 'is_empty', 0 );

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

Ответ 5

Мы используем функцию 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

Ответ 6

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

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

$r = count($x) - count(array_filter($x));

Ответ 7

function arrayvaluecount($array) {

    $counter = 0;
    foreach($array as $val){

        list($v)=$val;
        if($v){

        $counter =$counter+1;
        }

    }
return $counter;
}

Ответ 8

function countarray($array)
{        $count=count($array);         
         return $count;        
}        
$test=$array = array('', '', 'other', '', 'other');        
echo countarray($test);