60

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

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

中に「ベン」が何人いるかを直接知るにはどうすればよいですか?

4

10 に答える 10

135
$array = array("Kyle","Ben","Sue","Phil","Ben","Mary","Sue","Ben");
$counts = array_count_values($array);
echo $counts['Ben'];
于 2012-07-25T08:59:01.283 に答える
37

array_keyscountでこれを行うことができます。

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

出力:

3
于 2012-07-25T09:10:39.373 に答える
9

array_count_values関数を使用します。

$countValues = array_count_values($myArray);

echo $countValues["Ben"];

于 2012-07-25T09:00:02.170 に答える
6

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

于 2012-07-25T08:58:10.177 に答える
4
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
于 2016-07-21T21:18:19.190 に答える
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
)

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

于 2012-07-25T08:59:59.010 に答える
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)
于 2016-03-11T02:05:49.067 に答える
1

PHP 関数を試してくださいarray_count_values

于 2012-07-25T09:00:57.940 に答える
1

array_count_values整数と文字列に対してのみ機能します。たまたま float/numeric 値のカウントが必要な場合 (そして、精度や表現の小さな変化に注意を払っていない場合)、これは機能します:

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

$cntsキーを文字列として返すことに注意してください。それらを再変換するのは簡単ですが、値のモードを決定しようとしているので、最初の (いくつかの) 値のみを再変換する必要があります。

を使用するのではなく、カウントの配列を作成してループするバージョンをテストしましたがarray_count_values、これはより効率的であることがわかりました (おそらく 8 ~ 10%)。

于 2017-08-03T18:38:20.677 に答える