値が定数に等しい配列内の要素の数をカウントするにはどうすればよいですか?例、
$myArray = array("Kyle","Ben","Sue","Phil","Ben","Mary","Sue","Ben");
内部にある「ベン」の数を直接知るにはどうすればよいですか?
$array = array("Kyle","Ben","Sue","Phil","Ben","Mary","Sue","Ben");
$counts = array_count_values($array);
echo $counts['Ben'];
array_keysおよびcountでこれを行うことができます。
$array = array("blue", "red", "green", "blue", "blue");
echo count(array_keys($array, "blue"));
出力:
3
array_count_values()
functionを使用します。このリンクを確認してください http://php.net/manual/en/function.array-count-values.php
私の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
?>
array_count_values()関数を試してください
<?php
$array = array(1, "hello", 1, "world", "hello");
print_r(array_count_values($array));
?>
出力:
Array
(
[1] => 2
[hello] => 2
[world] => 1
)
配列内のすべての同じ発生をカウントする場合は、それらをすべてカウントし、結果を多次元配列として返す関数を次に示します。
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)
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
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%程度)。
PHP function array_count_values
。