Làm cách nào để đếm số phần tử bên trong một mảng có giá trị bằng hằng số? ví dụ,PHP - đếm giá trị mảng cụ thể
$myArray = array("Kyle","Ben","Sue","Phil","Ben","Mary","Sue","Ben");
làm cách nào để trực tiếp biết có bao nhiêu "Ben" ở trong?
Làm cách nào để đếm số phần tử bên trong một mảng có giá trị bằng hằng số? ví dụ,PHP - đếm giá trị mảng cụ thể
$myArray = array("Kyle","Ben","Sue","Phil","Ben","Mary","Sue","Ben");
làm cách nào để trực tiếp biết có bao nhiêu "Ben" ở trong?
$array = array("Kyle","Ben","Sue","Phil","Ben","Mary","Sue","Ben");
$counts = array_count_values($array);
echo $counts['Ben'];
Sử dụng chức năng array_count_values()
. Kiểm tra liên kết này http://php.net/manual/en/function.array-count-values.php
Tôi biết điều đó nhưng không đưa ra những gì tôi muốn, nó trả về tất cả số cùng một thành phần –
@ ivory-santos bạn có chắc phương pháp này không hữu ích không? .. kiểm tra liên kết này http://codepad.org/ Ye2x8uQD – swapnesh
@ ivory-santos không phải là những gì bạn chính xác muốn? –
thử array_count_values () chức năng
<?php
$array = array(1, "hello", 1, "world", "hello");
print_r(array_count_values($array));
?>
đầu ra:
Array
(
[1] => 2
[hello] => 2
[world] => 1
)
Sử dụng array_count_values chức năng.
$ countValues = array_count_values ($ myArray);
echo $countValues["Ben"];
Hãy thử chức năng PHP array_count_values
.
Bạn có thể thực hiện việc này với array_keys và đếm.
$array = array("blue", "red", "green", "blue", "blue");
echo count(array_keys($array, "blue"));
Output:
3
Đây là câu trả lời hay nhất vì nó không làm phiền php để đếm tất cả các lần xuất hiện của tất cả các giá trị, nó chỉ trả về các khóa đủ điều kiện và đếm chúng trong một cách mà sẽ không bao giờ ném một 'Thông báo'. Nói cách khác,' echo count (array_keys ($ array, "purple")); 'in' 0' không có 'Notice' Đây là một cách tiếp cận cao cấp/sạch hơn so với' array_count_values() '. +1 – mickmackusa
Nếu bạn muốn đếm tất cả các lần xuất hiện cùng trong mảng, đây là một chức năng để đếm tất cả, và trả lại kết quả như là một mảng đa chiều:
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";
Output:
3
array_count_values
chỉ hoạt động đối với số nguyên và chuỗi. Nếu bạn tình cờ muốn đếm cho phao/giá trị số (và bạn không chú ý của các biến thể nhỏ trong độ chính xác hoặc đại diện), công trình này:
function arrayCountValues($arr) {
$vals = [];
foreach ($arr as $val) { array_push($vals,strval($val)); }
$cnts = array_count_values($vals);
arsort($cnts);
return $cnts;
}
Lưu ý rằng tôi trở $cnts
với các phím như dây đàn. Nó sẽ dễ dàng để reconvert chúng, nhưng tôi đang cố gắng để xác định các chế độ cho các giá trị, vì vậy tôi chỉ cần phải chuyển đổi lại các giá trị đầu tiên (một số).
Tôi đã thử nghiệm một phiên bản được lặp lại, tạo ra một dãy số thay vì sử dụng array_count_values
và điều này hóa ra hiệu quả hơn (khoảng 8-10%)!
cảm ơn bạn đã trả lời. :) –
nếu mảng là đa chiều? –
@OkiErieRinaldi thì OP cần cập nhật câu hỏi. – James