2013-05-25 25 views
5

Có anyway để đếm mảng nếu giá trị> 10 mà không looping (foreach)?PHP: Cách đếm mảng nếu giá trị> 10 không lặp?

$arr=array(5,7,11,67,4,12,15); 
$wanted_output=4 
+0

Ý anh là gì bởi giá trị 'mảng đếm hơn 10 ' bạn có thể đưa ra ví dụ – Baba

+0

Nếu bạn muốn đếm số phần tử s sử dụng đếm ($ array); –

+0

@Baba Tôi nghĩ rằng anh ấy cần đếm số lượng các giá trị – Gautam3164

Trả lời

9

Chỉ cần sử dụng array_reduce sau đó bạn không cần count

echo array_reduce($arr, function ($a, $b) { 
    return ($b > 10) ? ++$a : $a; 
}); // returns 4 
+1

1 cho việc sử dụng tốt đẹp của array_reduce() –

+0

@ MarkBaker nhờ .. tìm quá nhiều câu trả lời array_filter ... – Baba

+0

Vâng, quá nhiều array_filters() :) Tôi quyết định sử dụng 'use' với một đóng cửa chỉ để phân biệt tôi –

0

Hãy thử với array_count_values ​​ như

print_r(array_count_values($my_array)); 

Nếu anh ta cần phải đếm các giá trị nhỏ hơn 10 thử như

$my_array = array_filter($my_array, function ($n) { 
    return $n > 10; 
}); 
echo count($my_array); 
0

Sử dụng array_count_values: -

$array = array(1, 38, 1, 38,35); 
print_r(array_count_values($array)); 

Output: -

Array 
(
    [1] => 2 
    [38] => 2 
    [35] => 1 
) 

Sử dụng array_filter: -

$arraycount = array_filter($array, function ($n) { 
    return $n > 10; 
}); 
echo count($arraycount); 
2
$minVal = 10; 
$counter = count(
    array_filter(
     $myArray, 
     function($value) use ($minVal) { 
      return $value > $minVal; 
     } 
    ) 
); 
+0

+ Tôi thích điều này .... sử dụng 'use ($ minVal)' thay vì giải pháp mã hóa – Baba

Các vấn đề liên quan