如何計算數組中等於常量的元素數? 例如,PHP - 計數特定數組值
$myArray = array("Kyle","Ben","Sue","Phil","Ben","Mary","Sue","Ben");
我怎麼能直接知道「奔」是多少裏面?
如何計算數組中等於常量的元素數? 例如,PHP - 計數特定數組值
$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_count_values()
函數。檢查此鏈接http://php.net/manual/en/function.array-count-values.php
我知道,但沒有給出我想要的,它返回所有相同的元素的數量 – 2012-07-25 08:59:22
@象牙 - 桑托斯你確定這種方法是沒有用的?? ..檢查此鏈接http://codepad.org/ Ye2x8uQD – swapnesh 2012-07-25 09:01:22
@象牙 - 桑托斯不是你想要的嗎? – 2012-07-25 09:01:43
嘗試array_count_values()函數
<?php
$array = array(1, "hello", 1, "world", "hello");
print_r(array_count_values($array));
?>
輸出:
Array
(
[1] => 2
[hello] => 2
[world] => 1
)
嘗試PHP函數array_count_values
。
您可以使用array_keys和count。
$array = array("blue", "red", "green", "blue", "blue");
echo count(array_keys($array, "blue"));
輸出:
3
)這是最好的答案,因爲它不會打擾php計算所有值的所有出現次數,它只是返回合格鍵並計入它們換句話說,echo count(array_keys($ array,「purple」));'打印'0'不帶'Notice'這是一個優於/清晰的方法,而'array_count_values ()'。+1 – mickmackusa 2017-11-15 04:16:18
如果要算上陣列內所有相同的出現次數,這裏有一個函數來計算它們,並將結果作爲多維數組的形式返回:
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
與鍵爲字符串。這很容易重新生成它們,但我試圖確定模式的值,所以我只需要重新轉換第一個(幾個)值。
我測試了一個循環版本,創建了一個計數數組而不是使用array_count_values
,結果證明效率更高(大概8-10%)!
感謝回答。 :) – 2012-07-25 09:15:51
如果數組是多維的呢? – 2014-09-16 04:41:07
@OkiErieRinaldi然後OP需要更新問題。 – James 2015-03-11 01:45:05