8

私はこの質問をたくさん検索しました。しかし、どこにも適切な解決策が見つかりませんでした。1 次元配列に対して行うのと同じようarray_count_values()に、同様のタイプのソリューションが必要な場合、多次元配列に対して何をしますか?

例えば-

Array
(
    [0] => Array
        (
            [07/11] => 134
        )

    [1] => Array
        (
            [07/11] => 134
        )

    [2] => Array
        (
            [07/11] => 145
        )

    [3] => Array
        (
            [07/11] => 145
        )

    [4] => Array
        (
            [07/12] => 134
        )

    [5] => Array
        (
            [07/12] => 99
        )
)

私が望む出力は-

Date: 07/11, ID: 134, Count: 2
Date: 07/11, ID: 145, Count: 2
Date: 07/12, ID: 135, Count: 1
Date: 07/12, ID: 99, Count: 1

どうすればいいですか?

4

4 に答える 4

2
<?php
  $array = array(array('07/11' => '134'), array('07/11' => '134'), array('07/12' => '145'));
  $count = array();
  foreach ($array as $val) {
    foreach ($val as $key => $subval) {
      $count[$key]++;
    }
  }
  print_r($count);
于 2013-07-14T18:56:37.090 に答える
0

あなたの代わりに、データ配列の構造を変更したでしょう。あなたの場合:

Array( 
    [07/11] => Array
        (
            [0] => 134,
            [1] => 134,
            [2] => 145,
            [3] => 145,
            ...
        )
)
于 2013-07-14T18:58:00.037 に答える
0

スマートな方法array_count_values(): 配列のすべての値をカウントします

1 次元配列に対して array_count_values() を実行するのと同じように、多次元配列に対して何をしますか。

それを 1 つの 1 次元配列に変換してから、関数を呼び出します。

$input = array(
    array('07/11' => '134'),
    array('07/11' => '134'), 
    array('07/11' => '145'),
    array('07/11' => '145'),
    array('07/12' => '134'), 
    array('07/12' => '99')
    );
$output = [];
foreach ($input as $inner){
    foreach ($inner as $key => $value){
        $output[] = "Date: $key, ID: $value, Count:";
    }
}

OUTPUT : ご想像のとおり

foreach(array_count_values($output) as $key => $value) {
    echo "$key $value<br>";
}

/*Date: 07/11, ID: 134, Count: 2
Date: 07/11, ID: 145, Count: 2
Date: 07/12, ID: 135, Count: 1
Date: 07/12, ID: 99, Count: 1*/
于 2021-05-09T21:13:31.330 に答える