2017-01-19 27 views
3

多次元配列で特別な条件の要素の数をどのように数えることができますか?PHPの配列からアイテムを数えよう

Array 
(
    [0] => Array 
     (
      [item] => 'Banana' 
     ) 

    [1] => Array 
     (
      [item] => 'Banana' 

     ) 

    [2] => Array 
     (
      [item] => 'Cherry' 
     ) 

    [3] => Array 
     (
      [item] => 'Apple' 

     ) 
) 

例えば、この配列のために私はBananaため2を見つける必要があります。

Siは私が試した:

$i=0; 
foreach($array as $arr) { 
    if($arr[item]=='Banana') { $i++; } 
} 

よりよい解決策はあり下さいますか?

ありがとうございました。

+0

解決策に問題がありますか? – Rasclatt

+1

そして、もし 'item'が引用符で囲まれていなければ、あなたはエラーで投げられるでしょう! – Thamilan

+0

あなたは 'sizeof()'と 'array_filter()'を組み合わせることができます –

答えて

2

方法1:使用

組み込み関数 - array_columnarray_count_values

print_r(array_count_values(array_column($arr,'item'))); 

方法2:

作るの簡単なロジックでのforeachを使用して果物を鍵とし、価値観としてのカウント:

$arr = [ 
["item"=>"Banana"], 
["item"=>"Banana"], 
["item"=>"Cherry"], 
["item"=>"Apple"] 
]; 

$countArr = []; 

foreach ($arr as $value) { 
    $item = $value['item']; 
    if(array_key_exists($item, $countArr)) // If key exists, increment its value 
     $countArr[$item]++; 
    else          // Otherwise, assign new key 
     $countArr[$item] = 1; 
} 

print_r($countArr); 

最終結果の両方の場合では次のようになります。

Array 
(
    [Banana] => 2 
    [Cherry] => 1 
    [Apple] => 1 
) 

あなたがバナナの数をしたいときに、あなたはこのようにそれを得ることができます。

echo $countArr['Banana']; 
+0

あなたのソリューションは私のものより面白いです。 :) –

+0

@FAD更新されたものをチェックしてください!組み込み関数を使用すると最も簡単です – Thamilan

+0

最初の方法で、数えたいアイテムを指定するにはどうすればいいですか(バナナ)? –

0

使用array_count_values()

すべての値を数えたい場合を除いて、あなたのアプローチには問題はありません。また、サイドノートでは、foreach()が、特に大きな配列のarray_column()よりわずかに速い時刻に出力されることがわかります。

関連する問題