2016-01-25 150 views
2

我有這個PHP數組:PHP計數陣列列

$food = array('fruits' => array('orange', 'banana', 'apple'), 
       'veggie' => array('carrot', 'collard', NULL)); 

,如果我用這個函數:

$rows = count($food); 
當然

結果將是2,但如何讓陣列列數?所以,我期待3作爲水果和素食列的價值。即使veggie有NULL。

+1

可能的[計數每個子陣列中的元件的重複在PHP](http://stackoverflow.com/questions/17496371/count-elements-in-each-sub-array-in-php) – Trix

回答

5

...我的意思是,如果列始終是相同的,那我們爲什麼要循環播放多達行?

如果列數始終是相同的,你有你的$food陣列的至少一個元素,你可以只探頭current()

$columns = count(current($food)); 
1

這種做法會造成計數組成的數組,按類型:

$rows = []; 
foreach ($food as $type => $items) { 
    $rows[$type] = count($items); 
] 
+0

嗨,兄弟,謝謝你的回答。但是,有沒有其他的方法來計算沒有foreach循環的列?我的意思是,如果列總是相同的,那我們爲什麼要循環多行? –

0

第一/當前元素你可以試試這個:

$food = array('fruits' => array('orange', 'banana', 'apple'), 
       'veggie' => array('carrot', 'collard', NULL)); 

     echo count($food['fruits']); 

然而,它只會在你知道元素例如'水果'。

4

您可以試試這個:array_mapcount

<?php 
$food = array('fruits' => array('orange', 'banana', 'apple'), 
     'veggie' => array('carrot', 'collard', NULL)); 
$typeTotals = array_map("count", $food); 
echo "<pre>"; 
print_r($typeTotals); 

OUTPUT:

陣列( [水果] => 3 [素] => 3)

+0

我也會這樣回答,如果列是鋸齒狀的,我還會添加'max'。 'echo max(array_map('count',$ food));',無論如何+1 – Ghost

+0

@Ghost但我猜他是期待在輸出中的兩個鍵。 –

2
$food = array('fruits' => array('orange', 'banana', 'apple'), 
       'veggie' => array('carrot', 'collard', NULL)); 
$array = array_map('count', $food);