2016-12-31 6 views
0

ここには配列があります。多次元配列で同じ値を数えるにはどうすればよいですか?

Array (Array (
    'name' => 'bmw', 
    'id' => 1 
), Array (
    'name' => 'toyota', 
    'id' => 1 
),Array ( 
    'name' => 'tata', 
    'id' => 2 
),Array ( 
    'name' => 'bajaj', 
    'id' => 3 
),Array (
    'name' => 'kawasaki', 
    'id' => 3 
), Array (
    'name' => 'tvs', 
    'id' => 3 
),Array (
    'name' => 'mitsubishi', 
    'id' => 2 
) 
); 

とid = 1> 2つのアイテム、ID 2 => 2つの項目とid = 3> 3項目となり、私を与えるために、次のどのようなコードを次のようになります。これは、それを何ですか? array_count_values()を試しましたが、それは私のためには機能しません。

答えて

0

文書array_count_valuesによれば、文字列と整数のみで動作します。あなたはそれを使うことができますが、最初にIDを持つ列を抽出する必要があります。 PHP 5.5以降は、とても簡単です。array_columnという関数を呼び出してください。

$list = array (Array (
    'name' => 'bmw', 
    'id' => 1 
), Array (
    'name' => 'toyota', 
    'id' => 1 
),Array ( 
    'name' => 'tata', 
    'id' => 2 
),Array ( 
    'name' => 'bajaj', 
    'id' => 3 
),Array (
    'name' => 'kawasaki', 
    'id' => 3 
), Array (
    'name' => 'tvs', 
    'id' => 3 
),Array (
    'name' => 'mitsubishi', 
    'id' => 2 
) 
); 

$results = array_count_values(array_column($list, 'id')); 
0

多分もっと良い解決策がありますが、これはうまくいくはずです。

あなたの配列が$arrに保存されていると仮定します。

$countItemsById = []; 

foreach($arr as $data){ 
    $countItemsById[ $data['id'] ]++; 
} 

このコードは、次のん: はまず、それが新しい配列$countItemsByIdを作成しています。 その後、既存の配列をループし、idの値を持つindex (key)の場合は新しい配列の値を1増やします。その後

$countItemsByIdは次のようになります。

Array (1 => 2, 2 => 2, 3 => 3) 
0

ループあなたの配列、各IDのoccerenceを計算します。

<?php 
$list = array (Array (
    'name' => 'bmw', 
    'id' => 1 
), Array (
    'name' => 'toyota', 
    'id' => 1 
),Array (
    'name' => 'tata', 
    'id' => 2 
),Array (
    'name' => 'bajaj', 
    'id' => 3 
),Array (
    'name' => 'kawasaki', 
    'id' => 3 
), Array (
    'name' => 'tvs', 
    'id' => 3 
),Array (
    'name' => 'mitsubishi', 
    'id' => 2 
) 
); 

$results = []; 
array_walk($list, function($v) use(&$results){ 
    $results[$v['id']]++; 
}); 
var_dump($results); 

出力:

array(3) { 
    [1]=> 
    int(2) 
    [2]=> 
    int(2) 
    [3]=> 
    int(3) 
} 
関連する問題