/ / Número de contagem de determinado valor em array multidimensional - php, arrays, array multidimensional, count

Número de contagem de determinado valor na matriz multidimensional - php, matrizes, matriz multidimensional, contagem

Como posso contar o número de um determinado valor de um array multidimensional? Por exemplo:

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

Neste exemplo, o resultado deve ser:

pilha == 1 => 4 correspondências
stack == 2 => 2 correspondências

Respostas:

1 para resposta № 1

Você teria que fazer um loop por conta própria:

$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";

este vai imprimir:

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

1 para resposta № 2
$occur = array();

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

1 para resposta № 3

Como Ray diz, dada sua estrutura de dados, sua única opção é percorrer toda a matriz e contar conforme você avança.

Se você está preocupado com o desempenho, você podedeseja considerar o uso de uma estrutura de dados diferente (talvez ao lado da matriz). A segunda estrutura de dados seria algo como um hash que toma os valores da matriz como chaves e contém uma contagem contínua que você pode construir enquanto você está construindo a matriz.

Dessa forma, você obtém um desempenho mínimo, em vez de ter que reiterar tudo novamente.


1 para resposta № 4

Você precisou de alguma modificação, mas isso será útil para você

<?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 para a resposta № 5

Eu simplesmente passaria por ele e enviaria os resultados para uma nova matriz de resultados (mas eu não vou codificá-lo para você).

Você pode fazer coisas mais complexas como usar array_walk / array_filter com uma função de retorno de chamada para processá-lo ... mas isso pode ser menos eficiente.

veja este post: Contagem Multidimensional de Matrizes PHP