, Belirli bir değer ile dizideki değerlerin sayısını hesaplama

4 Cevap php

Ben böyle bir dizi var ki:

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

Nasıl belirli bir değer ile sayı (örneğin boş) sayabilirsiniz?

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;
}

Bu durumda boş elemanların sayısı 3'tür.

4 Cevap

Nasıl sizin için sayılan her şeyi ile bir dizisini almak için array_count _values kullanmaya ne dersiniz?

Sadece bir fikir, sen array_keys( $myArray, "" ) bir arama değerini belirtir isteğe bağlı ikinci parametresi kullanılarak kullanabilirsiniz. Sonra sonucu saymak.

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

Ayrıca, sadece örn ilgilendiğiniz değerini saymak olacaktır bir fonksiyonu ile, array_reduce deneyebilirsiniz

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

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

Bazı kıyaslama bu array_count_values ​​daha hızlı olup olmadığını size söyleyebilir () olabilir

Ben bu hızlı olacağını bilmiyorum ama denemek için bir şey:

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