您应该检查数组,但不包括您要设置的级别。
如果你要设置
$anArray[ 'level1' ][ 'level2' ][ 'level3' ] = ...
在设置 level3 之前,您应该确保到 level2 的路径确实存在。
$anArray[ 'level1' ][ 'level2' ]
如果您不这样做,实际上不会杀死小狗,但根据您的特定环境,它们可能会生气。
您不必检查您实际设置的索引,因为自动设置它意味着它已被声明,但为了良好的实践,您应该确保没有任何东西被神奇地创建。
有一种简单的方法可以做到这一点:
<?php
function create_array_path( $path, & $inArray )
{
if ( ! is_array( $inArray ) )
{
throw new Exception( 'The second argument is not an array!' );
}
$traversed = array();
$current = &$inArray;
foreach( $path as $subpath )
{
$traversed[] = $subpath;
if ( ! is_array( $current ) )
{
$current = array();
}
if ( ! array_key_exists( $subpath, $current ) )
{
$current[ $subpath ] = '';
}
$current = &$current[ $subpath ];
}
}
$myArray = array();
create_array_path( array( 'level1', 'level2', 'level3' ), $myArray );
print_r( $myArray );
?>
这将输出:
Array
(
[level1] => Array
(
[level2] => Array
(
[level3] =>
)
)
)