2011-10-31 14 views
11

में कितनी बार विशिष्ट मान है मेरे पास $ uid नामक एक सरणी है। मैं यह देखने के लिए कैसे जांच सकता हूं कि मेरे $ uid सरणी में कितनी बार "12" मान है?जांचें कि सरणी PHP

उत्तर

25

कई तरीकों से।

$cnt = count(array_filter($uid,create_function('$a','return $a==12;'))); 

या

$tmp = array_count_values($uid); 
$cnt = $tmp[12]; 

या अन्य तरीकों के किसी भी संख्या।

0
$repeated = array(); 
foreach($uid as $id){ 
    if (!isset($repeated[$id])) $repeated[$id] = -1; 
    $repeated[$id]++; 
} 

जो

array(
    12 => 2 
    14 => 1 
) 
8

उपयोग array_count_values() में उदाहरण के लिए परिणाम देगा। उदाहरण के लिए,

$freqs = array_count_values($uid); 
$freq_12 = $freqs['12']; 
+0

array_count_values ​​यहाँ काम नहीं करेगा। मैं नहीं करता .. array_count_values ​​($ string) // या 12 $ string – DanielOlivasJr

+2

PHP के वर्तमान संस्करण आपको मज़ेदार कॉल के बाद '[]' नोटेशन का उपयोग करने की अनुमति नहीं देते हैं। – Hammerite

+0

@ हैमरेट जो बेवकूफ है, –

2

वहाँ इस के लिए अलग अलग समाधान कर रहे हैं:

$count = count(array_filter($uid, function($x) { return $x==12;})); 

या

array_reduce($uid, function($c, $v) { return $v + ($c == 12?1:0);},0) 

या सिर्फ एक पाश

for($i=0, $last=count($uid), $count=0; $i<$last;$i++) 
    if ($uid[$i]==12) $count++; 

या एक foreach के लिए

$count=0; 
foreach($uid as $current) 
    if ($current==12) $count++; 
3

बहुत ही सरल:

$uid= array(12,23,12,4,2,5,56); 
$indexes = array_keys($uid, 12); //array(0, 1) 
echo count($indexes); 
+0

महान काम सही है .. @ Baum & @MD –

संबंधित मुद्दे