PHP多維陣列中統計元素個數

來源:互聯網
上載者:User
Array(    [0] => Array        (            [0] => Array                (                    [0] => Array                        (                            [id] => 12                            [name] => '1'                        )                    [1] => Array                        (                            [id] => 28                            [name] => '2'                        )                        .....                )            [1] => Array                (                    [0] => Array                        (                            [id] => 121                            [name] => '2'                        )                    [1] => Array                        (                            [id] => 281                            [name] => '4'                        )                        ...                )        )        .... )

我想統計name對應的值出現的次數,
比如name='2'出現的次數是2
比如name='4'出現的次數是1

有什麼好的辦法嗎?

只能使用遍曆的話,如何效率最高?

可以使用外部工具:mysql,Memcache、redis。

回複內容:

Array(    [0] => Array        (            [0] => Array                (                    [0] => Array                        (                            [id] => 12                            [name] => '1'                        )                    [1] => Array                        (                            [id] => 28                            [name] => '2'                        )                        .....                )            [1] => Array                (                    [0] => Array                        (                            [id] => 121                            [name] => '2'                        )                    [1] => Array                        (                            [id] => 281                            [name] => '4'                        )                        ...                )        )        .... )

我想統計name對應的值出現的次數,
比如name='2'出現的次數是2
比如name='4'出現的次數是1

有什麼好的辦法嗎?

只能使用遍曆的話,如何效率最高?

可以使用外部工具:mysql,Memcache、redis。

$result = array();array_walk_recursive($demo, function($value,$key) use(&$result){     if ($key == 'name') {         $result[$value] += 1;     }});print_r($result);

不知道能不能滿足你的需求。最終的數組中的key==name的值

首先,比較中意樓上的方法
其次,這個本身也可以通過遞迴函式的方式來實現

function doFind(array $demo, &$result) {    foreach ($demo as $key => $value) {        if (is_array($value)) {            doFind($value, $result);        }        if ($key == 'name') {            if (!isset($result[$value])) {                $result[$value] = 1;            } else {                $result[$value]++;            }        }    }}$ret = [];doFind($demo, $ret);var_dump($ret);
通過對數組進行遞迴判斷,進行值統計。
  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.