在数组中查找键,并在该键中查找array_push

时间:2013-03-30 18:56:01

标签: php arrays multidimensional-array

我有一个带随机键的数组(它是一个推送到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到数组的那一部分。
  3. 非常有责任

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

1 个答案:

答案 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;

    }