web-dev-qa-db-ja.com

PHP-特定の配列値をカウント

値が定数に等しい配列内の要素の数をカウントするにはどうすればよいですか?例、

$myArray = array("Kyle","Ben","Sue","Phil","Ben","Mary","Sue","Ben");

内部にある「ベン」の数を直接知るにはどうすればよいですか?

37
Ivo San
$array = array("Kyle","Ben","Sue","Phil","Ben","Mary","Sue","Ben");
$counts = array_count_values($array);
echo $counts['Ben'];
97
Rajat Singhal

array_keysおよびcountでこれを行うことができます。

$array = array("blue", "red", "green", "blue", "blue");
echo count(array_keys($array, "blue"));

出力:

3
15
Oliver A.

array_count_values 関数を使用します。

$ countValues = array_count_values($ myArray);

echo $countValues["Ben"];

6
Rikesh

array_count_values() functionを使用します。このリンクを確認してください http://php.net/manual/en/function.array-count-values.php

5
swapnesh

私の2次元配列の場合、PHP Official Pageコメントから、私は有用なスニペットを見つけました2次元配列の場合-

<?php

$list = [
  ['id' => 1, 'userId' => 5],
  ['id' => 2, 'userId' => 5],
  ['id' => 3, 'userId' => 6],
];
$userId = 5;

echo array_count_values(array_column($list, 'userId'))[$userId]; // outputs: 2
?>
4

array_count_values()関数を試してください

<?php
$array = array(1, "hello", 1, "world", "hello");
print_r(array_count_values($array));
?>

出力:

Array
(
    [1] => 2
    [hello] => 2
    [world] => 1
)

http://php.net/manual/en/function.array-count-values.php

2
Doc

配列内のすべての同じ発生をカウントする場合は、それらをすべてカウントし、結果を多次元配列として返す関数を次に示します。

function countSame($array) {

$count = count($array);
$storeArray = array();
while ($count > 0) {
$count--;

if ($array[$count]) {
$a = $array[$count];
$counts = array_count_values($array);
$counts = $counts[$a];
$tempArray = array($a, $counts);
array_Push($storeArray, $tempArray);

$keys = array_keys($array, $a);
foreach ($keys as $k) {
unset($array[$k]);
} //end of foreach ($keys as $k)
} //end of if ($array[$count])

} //end of while ($count > 0)

return $storeArray;

} //end of function countSame($array)
0
frosty
define( 'SEARCH_STRING', 'Ben' );

$myArray = array("Kyle","Ben","Sue","Phil","Ben","Mary","Sue","Ben");

$count = count(array_filter($myArray,function($value){return SEARCH_STRING === $value;}));

echo $count, "\n";

出力:

3
0
Leo

array_count_valuesは整数と文字列に対してのみ機能します。浮動小数点/数値のカウントが必要になった場合(および精度や表現のわずかな変動に注意を払わない場合)、これは機能します。

function arrayCountValues($arr) {
  $vals = [];
  foreach ($arr as $val) { array_Push($vals,strval($val)); }
  $cnts = array_count_values($vals);
  arsort($cnts);
  return $cnts;
}

キーを文字列として$cntsを返すことに注意してください。再変換は簡単ですが、値のmodeを決定しようとしているので、最初の(いくつかの)値を再変換するだけです。

ループしたバージョンをテストし、array_count_valuesを使用するのではなく、カウントの配列を作成しましたが、これはより効率的であることが判明しました(8〜10%程度)。

0
dhc

PHP function array_count_values

0
nairbv