Aktueller Standort: Startseite> Neueste Artikel> Wird die Funktion von Array_Count_Values ​​() von PHP nur in eindimensionalen Arrays verwendet? Was passiert, wenn Sie in einem mehrdimensionalen Array übergeben?

Wird die Funktion von Array_Count_Values ​​() von PHP nur in eindimensionalen Arrays verwendet? Was passiert, wenn Sie in einem mehrdimensionalen Array übergeben?

M66 2025-06-07

In PHP ist die Funktion array_count_values ​​() eine sehr nützliche Funktion, die die Anzahl der Vorkommen jedes Wertes in einem Array zählt. Die Funktion ist wie folgt definiert:

 array_count_values(array $array): array

1. Einführung in die Funktion array_count_values ​​()

Die Hauptfunktion der Funktion Array_Count_Values ​​() besteht darin, ein assoziatives Array mit allen Werten im ursprünglichen Array und der Anzahl der angezeigten Wert zurückzugeben. Zum Beispiel:

 $array = array(1, 2, 2, 3, 3, 3, 4);
$result = array_count_values($array);
print_r($result);

Die Ausgabe wird sein:

 Array
(
    [1] => 1
    [2] => 2
    [3] => 3
    [4] => 1
)

2. Kann Array_Count_Values ​​() nur für eindimensionale Arrays verwendet werden?

Streng genommen ist die Funktion array_count_values ​​() für ein eindimensionales Array ausgelegt, sodass sie Elemente in einem eindimensionalen Array itereriert und die Anzahl der angezeigten Anzahl von Malen zählt. Wenn das eindimensionale Array übergeben wird, kann es wie erwartet funktionieren und ein Zählergebnis zurückgeben.

Wenn wir jedoch ein mehrdimensionales Array übergeben, berücksichtigt Array_Count_values ​​() nur die äußersten (ersten Schicht) Elemente des Arrays und ignorieren das in der innere Schicht verschachtelte Array. Wenn das Array mehrdimensionale Arrays oder andere komplexe Datenstrukturen enthält, verarbeitet Array_Count_values ​​() es nicht rekursiv.

3. Was passiert, wenn Sie in einem mehrdimensionalen Array übergeben?

Schauen wir uns ein Beispiel an:

 $array = array(
    'a' => 1,
    'b' => 2,
    'c' => array(1, 2),
    'd' => 3,
);

$result = array_count_values($array);
print_r($result);

Die Ausgabe wird sein:

 Array
(
    [1] => 1
    [2] => 1
    [3] => 1
)

Wie Sie sehen können, zählt Array_Count_Values ​​() nur das äußerste Element und ignoriert den Array -Wert des Schlüssels c . Wenn wir alle Werte in einem mehrdimensionalen Array zählen möchten, müssen wir zunächst "verflachten", beispielsweise Array_walk_recursive () verwenden oder diese durch Rekursion verarbeiten.

4. Lösen Sie das Zählproblem mehrdimensionaler Arrays

Wenn Sie die Anzahl der Vorkommen jedes Wertes in einem mehrdimensionalen Array zählen müssen, können Sie eine rekursive Methode verwenden, um das Array zu verflachen. Hier ist ein Beispiel:

 function flattenArray($array) {
    $result = [];
    array_walk_recursive($array, function($value) use (&$result) {
        $result[] = $value;
    });
    return $result;
}

$array = array(
    'a' => 1,
    'b' => 2,
    'c' => array(1, 2),
    'd' => 3,
);

$flattenedArray = flattenArray($array);
$result = array_count_values($flattenedArray);
print_r($result);

Die Ausgabe wird sein:

 Array
(
    [1] => 2
    [2] => 2
    [3] => 1
)

Durch den rekursiven Modus verflachen wir das mehrdimensionale Array und verwenden dann Array_Count_values ​​(), um zu zählen. Auf diese Weise können Sie alle Werte in einem mehrdimensionalen Array zählen.

Zusammenfassen

Die Funktion array_count_values ​​() selbst kann nur für eindimensionale Arrays verwendet werden. Wenn ein mehrdimensionales Array übergeben wird, zählt die Funktion nur die Werte des äußersten Elements und zählt die Werte im verschachtelten Array nicht. Um mehrdimensionale Arrays zu verarbeiten, können Sie sie zuerst rekursiv oder auf andere Weise überflachen und dann die Anzahl der Ereignisse jedes Werts verwenden.