Count number of values in array with a given value


Question

Say I have an array like this:

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

How can I count the number with a given value (in the example blank)?

And do it efficiently? (for about a dozen arrays with hundreds of elements each) This example times out (over 30 sec):

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

In this case the number of blank elements is 3.

1
22
1/23/2012 4:31:30 PM

Accepted Answer

How about using array_count _values to get an array with everything counted for you?

35
8/23/2009 2:45:55 AM

Just an idea, you could use array_keys( $myArray, "" ) using the optional second parameter which specifies a search-value. Then count the result.

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

Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow
Icon