这是否足够接近您的需要?
$a = "a,b";
list( $i, $j ) = explode( ",", $a );
echo $arr[$i][$j];
附录:$arr如果数组总是恰好有两个级别,则上面的答案将起作用。如果它可能有更多(或更少),则可以使用以下方法:
function array_get_nested ( $array, $keys ) {
$value = $array;
foreach ( $keys as $index ) {
$value = $value[ $index ];
}
return $value;
}
上面的函数接受两个数组作为参数:一个包含我们想要的值,另一个列出我们需要在第一个数组中定位它的键。例如,如果我们有一个这样的数组:
$arr = array( "a" => array( "b" => array( "c" => 123 ) ) );
然后
echo array_get_nested( $arr, array( "a", "b", "c" ) );
会打印123.
将字符串键转换为适合第二个参数的数组array_get_nested()取决于键的格式,但它可以像explode()使用合适的分隔符调用一样简单。例如,上面的最后一行代码可以重写为:
$k = "a,b,c";
echo array_get_nested( $arr, explode( ",", $k ) );
要修改嵌套数组,我们可以使用类似的函数:
function array_set_nested ( &$array, $keys, $value ) {
$ref =& $array;
foreach ( $keys as $index ) {
$ref =& $ref[ $index ];
}
$ref = $value;
}
请注意,PHP 方便地为我们“自动激活”数组,因此我们可以,例如,获取一个以前未定义的变量$foo并将其转换为三级嵌套数组,只需:
array_set_nested( $foo, array( "a", "b", "c" ), 123 );