【发布时间】:2014-09-10 20:33:51
【问题描述】:
基本上,我有一个像这样的多维数组(它实际上要广泛得多,但这是我需要访问的裸骨架):
$arr = [
1 => [
'val1' => 'foo',
'val2' => 'bar',
],
2 => [
'type1' => [
'val3' => 'baz',
'val4' => 'fuz',
],
],
]
我将动态访问此数组,并且在尝试访问之前不知道我将访问 $arr[1] 还是 $arr[2]。因此,在那个时候到来之前,我也不知道我需要深入多少级。我一直在寻找一个可以访问多维数组的不同级别深度的函数,但我找不到类似的东西。我知道我可以使用 if 或 switch 语句来做到这一点,但我试图将其简化为:
if ( isset( $arr[$var]...... ) ) {
return $arr[$var]......;
}
我的问题是我不知道如何构建一个字符串来用正确数量的索引替换“......”。我尝试使用循环制作一个字符串:
function getAccessString( array $arrOfIndices ) {
$str = '';
foreach( $arrOfIndices as $index ) {
$str .= '['.$index.']';
}
return $str;
}
但是,我无法让该字符串生成函数的任何变体工作,因为我可以以一种可以访问我的多维数组的方式连接它。
附:如果没有办法以非常简单的格式访问这个数组,沿着这条线......
if ( isset( $arr[$var]...... ) ) {
return $arr[$var]......;
}
... 我将简单地使用 switch 语句。使用迭代器、解析数组和诸如此类的东西不会比我已经得到的 switch 语句更简单。
【问题讨论】:
标签: php arrays multidimensional-array