如何在PHP中获取多维数组中的所有键

11
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”获取所有键值?

谢谢!


3
从foreach()循环开始可能是个好主意。 - user557846
你需要使用广度优先搜索或深度优先搜索来查找数组中的所有键。为了轻松实现这一点,你需要使用递归函数。 - Cheesebaron
对于这个确切的数组 $keys = array_merge(array_keys($array), array_keys(current($array))); 可能已经足够了。但是我们需要确切地知道您尝试通过此方法实现什么目的,以便为您提供关于最佳方法的建议... - DaveRandom
2个回答

18

试一下这个

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。 - Mike Q

5

如果您不知道数组的大小,可以使用递归函数和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;

}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接