当值的路径(级别)动态变化时,如何访问多维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:因此设置来检查是否。你可以把它应用到任何深度。在回答中,根本没有访问任何值。当心。