2

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

$myArray['levelA']['levelB']['levelC'] = $value

阅读它也很简单。例如:

$value = $myArray['levelA']['levelB']['levelC']-

当我知道使用了多少级别时,这很容易。但是当我们不知道会发生多少个级别时怎么办?

如果我有这样的配置文件怎么办:

levelA.levelB.levelC.levelD = someValue

如果我想用levelA.levelB.levelC.levelD它(作为“路径”)将它映射到多维数组,但不知道我的配置有多深怎么办?

4

2 回答 2

1

这是我写的一个小类,它将确定维度的数量。您可以轻松地对其进行修改以做任何您想做的事情,或者只使用它返回的数字来指导您自己的功能:

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);会给你维度的数量。

于 2013-01-10T00:54:35.460 回答
-1

但是,当我们不知道会发生多少个级别时[原文如此!] 怎么办?

嗯,只是你不知道有多少级别。

无论如何,您都可以使用isset()它来轻松找出:

$exists = isset($myArray['levelA']['levelB']['levelC']['levelD']);

但我也必须承认我有一些问题要理解你的问题。

您是否在寻找:

或类似的?

于 2013-01-10T00:04:53.950 回答