it-swarm.com.de

Zählen des Auftretens eines bestimmten Werts in einem Array mit PHP

Ich versuche, eine native PHP - Funktion zu finden, mit der ich die Anzahl der Vorkommen eines bestimmten Werts in einem Array zählen kann. Ich bin mit der Funktion array_count_values ​​() vertraut, aber dies gibt die Anzahl aller Werte in einem Array zurück. Gibt es eine Funktion, mit der Sie den Wert übergeben und nur die Instanzanzahl für diesen bestimmten Wert zurückgeben können? Zum Beispiel:

$array = array(1, 2, 3, 3, 3, 4, 4, 5, 6, 6, 6, 6, 7);

$instances = some_native_function(6, $array);  //$instances will be equal to 4

Ich weiß, wie ich meine eigene Funktion erstellen kann, aber warum das Rad neu erfinden? 

22
Javit
function array_count_values_of($value, $array) {
    $counts = array_count_values($array);
    return $counts[$value];
}

Nicht native , aber komm schon, es ist einfach genug. ;-)

Alternative:

echo count(array_filter($array, function ($n) { return $n == 6; }));

Oder:

echo array_reduce($array, function ($v, $n) { return $v + ($n == 6); }, 0);

Oder:

echo count(array_keys($array, 6));
39
deceze

Diese Lösung kann Ihrer Anforderung nahekommen

$array = array(1, 2, 3, 3, 3, 4, 4, 5, 6, 6, 6, 6, 7);
print_r(array_count_values($array));

Result:

Array
( [1] => 1 ,[2] => 1 , [3] => 3, [4] => 2,[5] =>1, [6] => 4, [7] => 1 )

für Details

12

Ab PHP 5.4.0 können Sie Funktions-Array-Dereferenzierung für den Index [6] des Arrays verwenden, das sich aus array_count_values() ergibt:

$instances = array_count_values($array)[6]; //$instances will be equal to 4
10
AbraCadaver

Angenommen, wir haben das folgende Array:

     $stockonhand = array( "large green", "small blue", "xlarge brown", "large green", "medieum yellow", "xlarge brown",  "large green");

1) Kopieren Sie diese Funktion und fügen Sie sie einmal auf Ihre Seite ein.

    function arraycount($array, $value){
    $counter = 0;
    foreach($array as $thisvalue) /*go through every value in the array*/
     {
           if($thisvalue === $value){ /*if this one value of the array is equal to the value we are checking*/
           $counter++; /*increase the count by 1*/
           }
     }
     return $counter;
     }

2) Als Nächstes müssen Sie die Funktion jedes Mal anwenden, wenn Sie einen bestimmten Wert in einem Array zählen möchten. Zum Beispiel:

     echo arraycount($stockonhand, "large green"); /*will return 3*/

     echo arraycount($stockonhand, "xlarge brown"); /*will return 2*/
3
Kareem

Genau das suchen Sie

<?php
 $MainString = 'Yellow Green Orange Blue Yellow Black White Purple';
 $FinderString = 'Yellow Blue White';
 $mainArray = explode(" ", $MainString);
 $findingArray = explode(" ", $FinderString);
 $count = 0;
 $eachtotal = array_count_values($mainArray);
 foreach($findingArray as $find){

    $count += $eachtotal[$find];
 }
 echo $count;


?>
0
Muhammad Bilal

Angenommen, ich habe ein Array wie dieses:

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

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

Dies gibt an, wie oft sich '' im Array wiederholt 

0