Anzahl der Werte im Array mit einem gegebenen Wert zählen

Lesezeit: 3 Minuten

Anzahl der Werte im Array mit einem gegebenen Wert zahlen
Tom

Angenommen, ich habe ein Array wie folgt:

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

Wie kann ich die Zahl mit einem bestimmten Wert (im Beispiel leer) zählen?

Und das effizient? (für etwa ein Dutzend Arrays mit jeweils Hunderten von Elementen) Dieses Beispiel läuft ab (über 30 Sekunden):

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

In diesem Fall beträgt die Anzahl der leeren Elemente 3.

  • Cellfish: array_count_values ​​funktioniert, aber das Skript, dessen Ausführung normalerweise 1 – 2 Sekunden dauert, hat fast 20 Sekunden gedauert! Johnathan: array_keys hat für diese bestimmte Funktion nicht funktioniert. Steve: array_reduce funktioniert auch, aber nicht so schnell wie ich möchte. Camomile: Einfach durch Ändern von $value === ” auf empty($value), was sich als der schnellste Weg herausstellte, dies zu tun. Funktion ohne ($array) { $count = 0; foreach($array as $value) { if(empty($value)) { $count++; } } $count zurückgeben; }

    – Tom

    23. August 2009 um 20:19 Uhr

Wie wäre es mit verwenden array_count _values um ein Array zu erhalten, in dem alles für Sie gezählt wurde?

  • array_count_values() ist nicht zuverlässig, wenn die Anzahl Null ist, da nur gefundene Werte zu Schlüsseln werden

    – mickmackusa

    23. August 2019 um 13:12 Uhr

Anzahl der Werte im Array mit einem gegebenen Wert zahlen
Samson

Nur eine Idee, die Sie verwenden könnten array_keys( $myArray, "" ) Verwenden des optionalen zweiten Parameters, der einen Suchwert angibt. Zählen Sie dann das Ergebnis.

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

  • Dies ist eine großartige Alternative, insbesondere wenn es um boolesche Werte geht.

    – Steve Tauber

    7. Februar 2013 um 23:10 Uhr

  • @SteveTauber oder Arrays als Suchwert 🙂

    – Roberto Sepúlveda Bravo

    4. September 2019 um 5:51 Uhr

Anzahl der Werte im Array mit einem gegebenen Wert zahlen
KamilleFall

Ich weiß nicht, ob dies schneller wäre, aber es ist etwas zu versuchen:

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

Du könntest es auch versuchen array_reducemit einer Funktion, die nur den Wert zählt, an dem Sie interessiert sind. z

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

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

Ein Benchmarking könnte Ihnen sagen, ob dies schneller ist als array_count_values()

1646489651 945 Anzahl der Werte im Array mit einem gegebenen Wert zahlen
Bhushan Rana

Wir verwenden die Funktion array_filter, um die Anzahl der Werte im Array herauszufinden

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

1646489651 551 Anzahl der Werte im Array mit einem gegebenen Wert zahlen
J. Chomel

Im Allgemeinen nur zum Zählen von Leerzeichen. Hängt wirklich vom Anwendungsfall und der erforderlichen Geschwindigkeit ab. Ich persönlich mag es, Dinge in einer Zeile zu machen.

Wie die gewählte Antwort, aber Sie brauchen immer noch eine Zeile, um die benötigten Daten in eine andere Variable zu extrahieren.

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

1646489652 272 Anzahl der Werte im Array mit einem gegebenen Wert zahlen
Entsorger

function arrayvaluecount($array) {

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

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

        $counter =$counter+1;
        }

    }
return $counter;
}

  • Könnten Sie Ihren Code auch auf Englisch erklären, indem Sie Ihre Antwort bearbeiten?

    – Ben

    13. Januar 2015 um 8:13 Uhr

  • Bitte erklären Sie Ihren Code dem OP und den zukünftigen Lesern.

    – Sufiyan Ghori

    13. Januar 2015 um 9:17 Uhr

946870cookie-checkAnzahl der Werte im Array mit einem gegebenen Wert zählen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy