0

我有一个带有随机键的数组(它是一个要推送到 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 个条目。

所以总结一下:

  1. 在大数组中查找键(它仍然是唯一的)
  2. array_push 到数组的那一部分。

非常感谢

编辑:解释得更详细,不够清楚

4

1 回答 1

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;

    } 
于 2013-03-30T19:48:17.310 回答