当值的路径(级别)动态变化时,如何访问多维PHP数组?

当值的路径(级别)动态变化时,如何访问多维PHP数组?,php,arrays,path,Php,Arrays,Path,在多维数组中设置值很容易。例如: $myArray['levelA']['levelB']['levelC'] = $value 阅读它也很简单。例如: $value = $myArray['levelA']['levelB']['levelC']- 当我知道使用了多少关卡时,这很容易。但是,当我们不知道会发生多少水平时,会发生什么呢 如果我有一个如下的配置文件: levelA.levelB.levelC.levelD = someValue 如果我想使用levelA.levelB.lev

在多维数组中设置值很容易。例如:

$myArray['levelA']['levelB']['levelC'] = $value
阅读它也很简单。例如:

$value = $myArray['levelA']['levelB']['levelC']-
当我知道使用了多少关卡时,这很容易。但是,当我们不知道会发生多少水平时,会发生什么呢

如果我有一个如下的配置文件:

levelA.levelB.levelC.levelD = someValue
如果我想使用
levelA.levelB.levelC.levelD
将它(作为“路径”)映射到多维数组,而不知道我的配置有多深呢

但是,当我们不知道会发生多少层时,会发生什么呢

只是你不知道有多少关卡

无论如何,您都可以使用来轻松查找:

$exists = isset($myArray['levelA']['levelB']['levelC']['levelD']);
但我也必须承认,我有一些问题要理解你们的问题

您正在寻找:


还是类似的?

我写了一个小类,它将决定维度的数量。您可以轻松地修改它以执行任何您想要的操作,或者仅使用它返回的数字来指导您自己的函数:

class DimensionCounter {

    var $i;

    public function count($array) {
        $this->i = 1;
        return $this->readArray($array);
    }

    private function readArray($array) {

        foreach($array as $value) {
            if (is_array($value)) {
                $this->i++;
                $this->readArray($value);               
            }
            return $this->i;
        }
    }
}

在您的情况下,
$counter=new DimensionCounter()
$num=$counter->count($value)将提供维度的数量。

您可以逐级循环。第一次迭代,
$foo=$myArray['a']
。我不确定您的配置文件正在做什么,因为它看起来像是一个常量的串联,您正试图为其分配另一个常量。也许可以展示一个更真实的例子来说明您正在尝试做什么。要像您那样访问值,您需要知道编码时数组的深度。这不是在运行时动态处理它的方法。@DanielaWaranie:因此设置
来检查是否。你可以把它应用到任何深度。在回答中,根本没有访问任何值。当心。