我有一个带随机键的数组(它是一个推送到json的菜单构建器)。所以在这个多维我想尝试array_push更多的细节。但这就是问题,我不知道数组中的键或维度。我只知道钥匙。
所以我想要做的就是下面。
$arr[unique_key1] = value;
$arr[unique_key1][unique_key2] = 'value';
$arr[unique_key1][unique_key2][unique_key3] = 'value';
$arr[unique_key1][unique_key2][unique_key3][unique_key4] = 'value';
$key = unique_key4; // (example) key to look for and array push
if (array_key_exists($key, $arr)) { // check to be sure, should be there
// here I want to loop until i found the specific key, and on that place array_push
}
else {
// error handeling
}
这个例子中的$ arr很简单,但真正的$ arr在不同的层中包含大约800个条目。
总结一下:
非常有责任
编辑:更详细解释,不够清楚
答案 0 :(得分:0)
我认为这就是你想要的..从下面的代码中你将了解钥匙,做你想做的......
if ($array_in_which_we_can_add = multi_array_key_exists($key, $arr)) {
array_push($array_in_which_we_can_add, 'crap I want to add');
}
else {
// error handeling
}
function multi_array_key_exists( $needle, $haystack ) {
foreach ( $haystack as $key => $value ) :
if ( $needle == $key )
return $key;
if ( is_array( $value ) ) :
if ( multi_array_key_exists( $needle, $value ) == true )
return true;
else
continue;
endif;
endforeach;
return false;}
修改强>
这将完全符合您的要求
if ($array_in_which_we_can_add = multidimensionalArrayMap($needle, $haystack)) {
print_r($array_in_which_we_can_add);
}
else {
// error handeling
}
$flag = 0;
function multidimensionalArrayMap( $needle, $haystack ) {
$newArr = array();
foreach( $haystack as $key => $value )
{
if($key == $needle)
$flag = 1;
$newArr[ $key ] = ( (is_array( $value ) && $key != $needle) ? multidimensionalArrayMap($needle, $value ) :'crap I want to add' );
}
if($flag)
return $newArr;
return false;
}