【问题标题】:How to get all the key in multi-dimensional array in php如何在php中获取多维数组中的所有键
【发布时间】:2012-06-29 09:29:13
【问题描述】:
Array
(
    [0] => Array
        (
            [name] => A
            [id] => 1
            [phone] => 416-23-55
            [Base] => Array
                (
                    [city] => toronto
                )

            [EBase] => Array
                (
                    [city] => North York                
                )

            [Qty] => 1
        )

(
    [1] => Array
        (
            [name] => A
            [id] => 1
            [phone] => 416-53-66
            [Base] => Array
                (
                    [city] => qing
                )

            [EBase] => Array
                (
                    [city] => chong                
                )

            [Qty] => 2
        )

)

如何获取格式为“0, name, id, phone, Base, city, Ebase, Qty”的所有键值?

谢谢!

【问题讨论】:

  • 从 foreach() 循环开始是个不错的主意。
  • 您需要进行广度优先搜索或深度优先搜索才能找到数组中的所有键。为了轻松做到这一点,您需要使用递归函数。
  • 对于那个确切的数组$keys = array_merge(array_keys($array), array_keys(current($array))); 可能会这样做。但是我们可以通过这样做来准确了解您正在尝试完成什么,以便提供有关最佳方法的建议......

标签: php arrays key multidimensional-array


【解决方案1】:

试试这个

function array_keys_multi(array $array)
{
    $keys = array();

    foreach ($array as $key => $value) {
        $keys[] = $key;

        if (is_array($value)) {
            $keys = array_merge($keys, array_keys_multi($value));
        }
    }

    return $keys;
}

【讨论】:

  • PHP 5.x 不喜欢函数调用中的数组 $array 。仅供参考,而是 $array = array() 或只是 $array)
【解决方案2】:

如果您不知道数组的大小,请使用带有 foreach 循环的递归函数,如果每个 $val 都是一个数组,则该循环会调用自身。如果您确实知道大小,那么只需遍历每个维度并记录每个维度的键。

类似这样的:

<?php
function getKeysMultidimensional(array $array) 
{
    $keys = array();
    foreach($array as $key => $value)
    {
        $keys[] = $key;
        if( is_array($value) ) { 
            $keys = array_merge($keys, getKeysMultidimensional($value));
        }
    }

    return $keys;

}

【讨论】:

    猜你喜欢
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-15
    • 1970-01-01
    相关资源
    最近更新 更多