/ / Anzahl des bestimmten Wertes in einem mehrdimensionalen Array - php, Arrays, mehrdimensionales Array, count

Anzahl der bestimmten Werte im mehrdimensionalen Array - php, arrays, multidimensional-array, count

Wie kann ich die Anzahl eines bestimmten Wertes aus einem mehrdimensionalen Array zählen? Zum Beispiel:

array(
array ("stack" => "1")
array ("stack" => "1")
array ("stack" => "1")
array ("stack" => "1")
array ("stack" => "2")
array ("stack" => "2")
)

In diesem Beispiel sollte das Ergebnis lauten:

Stapel == 1 => 4 Übereinstimmungen
Stapel == 2 => 2 Übereinstimmungen

Antworten:

1 für die Antwort № 1

Sie "müssten es selbst schleifen:

$counts = array();
foreach( $array as $value) {
foreach( $value as $k => $v) {
if( !isset( $counts[$k])) $counts[$k] = array();
if( !isset( $counts[$k][$v])) $counts[$k][$v] = 0;
$counts[$k][$v] += 1;
}
}

foreach( $counts as $k => $v1)
foreach( $v1 as $v => $count)
echo "$k == $v => $count matchesn";

Dies wird gedruckt:

stack == 1 => 4 matches
stack == 2 => 2 matches

1 für die Antwort № 2
$occur = array();

foreach ($array as $item) {
foreach ($item as $k => $v) {
$occur["$k == $v"]++;
}
}

1 für die Antwort № 3

Wie Ray sagt, ist Ihre Datenstruktur angesichts der Datenstruktur die einzige Option, das gesamte Array zu durchlaufen und fortlaufend hochzuzählen.

Wenn Sie sich Sorgen um die Leistung machen, könnten Siemöchten eine andere Datenstruktur (möglicherweise neben dem Array) verwenden. Die zweite Datenstruktur wäre so etwas wie ein Hash, der die Array-Werte als Schlüssel übernimmt und eine fortlaufende Anzahl enthält, die Sie beim Erstellen des Arrays erstellen können.

Auf diese Weise erleiden Sie einen minimalen Performance-Hit und müssen nicht noch einmal wiederholen.


1 für die Antwort № 4

Sie haben einige Modifikationen benötigt, aber dies wird Ihnen helfen

<?php


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

$array = array(1, 2, 3, 3, 3, 4, 4, 5, 6, 6, 6, 6, 7);
$array2 = array_unique($array);
for($i=0 ; $i<count($array2) ; $i++)
{
$temp = array_count_values_of($array2[$i], $array);
$result[$i][0] = $array2[$i];
$result[$i][1] = $temp;
}

print_r($result);

?>

0 für die Antwort № 5

Ich würde es einfach durchlaufen und die Ergebnisse in ein neues Ergebnisfeld schieben (aber ich werde es nicht für Sie kodieren).

Sie können komplexere Aufgaben ausführen, z. B. array_walk / array_filter mit einer Callback-Funktion verwenden, um sie zu verarbeiten. Dies ist jedoch möglicherweise weniger effizient.

Siehe diesen Beitrag: Anzahl der mehrdimensionalen PHP-Arrays