2012-12-04 37 views
2

我有一個可以禁用或啓用的值數組,因此我想知道啓用了多少個值。這裏是一段代碼:PHP對來自數組的已啓用值進行計數

$list = array(
$variable1, 
$variable2, 
$variable3, 
$variable4 
); 
$count = count($list); 

感謝您的任何答覆。

更新:值不是真或假,但啓用/禁用。在這種情況下你的答案是否適用?再次感謝。

+0

看到我QN updat e –

回答

9

如果唯一有效的選項是布爾真假,然後

$countTrue = array_sum($list); 

編輯

與 '啓用', '禁用' 作爲可能的值:

$countTrue = array_reduce(
    $list, 
    function($counter, $value) { 
     return $counter + ($value == 'ENABLE'); 
    }, 
    0 
); 
+1

+漂亮的類型轉換hack – Baba

+0

不錯的一個。太糟糕OP改變了這個問題的含義。 – PeeHaa

+0

謝謝馬克,你最好的啤酒:) – thednp

9

只需使用array_filter

$list = array(true,false,true,true); 
$count = count(array_filter($list)); 
echo $count ; 

或者

$list = array("Enable","DISABLE","ENabLE","ENABLE"); 
$count = count(array_filter($list,function($v) { return stripos($v, "enable") !== false; })); 
echo $count ; 

ENABLEDISABLE長字符串,但他們開始E & D分別,你可以利用它來進行計數

$count = array_reduce($list,function($a,$b){$b{0} == "E" and $a++ ;return $a;},0); 
echo $count ; 

,他們將所有的輸出

3 
+1

比其他人提出的更清潔的解決方案(包括我自己)。票++ ++ – BenM

+0

這個輸出是什麼: $ count = count(array_filter($ list,'enabled')); – thednp

+0

@Danny ..它會有利於你休息你的自我http://eval.in/4292 – Baba

0

剛迭代thr ough數組並對它們進行計數。

$trueValues = 0; 
foreach ($list as $listItem) 
{ 
    if ($listItem) 
    $trueValues++; 
} 

echo "Array has ".$trueValues." TRUE items); 
+0

謝謝你的回答:) – thednp

1
$array = array('ENABLED', 'DISABLED', 'ENABLED', 'ENABLED', 'ENABLED', 'DISABLED'); 
$count = array_count_values($array); 

會產生

array(2) { 
    ["ENABLED"]=>int(4) 
    ["DISABLED"]=>int(2) 
} 

,所以你可以把它用

$count["ENABLED"] 
+0

@Baba看到更新 - 和他更新qn –

+0

+採取建議 – Baba

+0

兄弟沒有問題:) –

0
$list = array('ENABLE','DISABLE','ENABLE','ENABLE'); 

function countTrues($n) 
{ 
    if ($n == 'ENABLE'){return $n;} 
} 

$x = array_filter($list , "countTrues"); 

$count = count($x); 

這應該做的伎倆

+0

感謝您的回答,我欣賞:) – thednp

相關問題