更新关联数组

Zac*_*ach 0 php arrays associative-array

可能只是因为我已经在周末检查了一下,但是在根据某个值更新关联数组时遇到了一些麻烦.例如,这是我到目前为止:

$slideshow_vars = array(
        'js_animation'          => $slideshow_options['js_animation'],
        'js_slide_direction'    => $slideshow_options['js_slide_direction'],
        'js_slideshow'          => $slideshow_options['js_slideshow'],
        'js_slideshow_speed'    => $slideshow_options['js_slideshow_speed'],
        'js_animation_duration' => $slideshow_options['js_animation_duration'],
        'js_direction_nav'      => $slideshow_options['js_direction_nav'],
        'js_control_nav'        => $slideshow_options['js_control_nav'],
        'js_keyboard_nav'       => $slideshow_options['js_keyboard_nav'],
        'js_mousewheel'         => $slideshow_options['js_mousewheel'],
        'js_prev_text'          => $slideshow_options['js_prev_text'],
        'js_next_text'          => $slideshow_options['js_next_text'],
        'js_pause_play'         => $slideshow_options['js_pause_play'],
        'js_pause_text'         => $slideshow_options['js_pause_text'],
        'js_play_text'          => $slideshow_options['js_play_text'],
        'js_randomize'          => $slideshow_options['js_randomize'],
        'js_slide_start'        => $slideshow_options['js_slide_start'],
        'js_animation_loop'     => $slideshow_options['js_animation_loop'],
        'js_pause_on_action'    => $slideshow_options['js_pause_on_action'],
        'js_pause_on_hover'     => $slideshow_options['js_pause_on_hover'],
        'js_controls_container' => $slideshow_options['js_controls_container'],
        'js_manual_controls'    => $slideshow_options['js_manual_controls'],
        'js_start_function'     => $slideshow_options['js_start_function'],
        'js_before_function'    => $slideshow_options['js_before_function'],
        'js_after_function'     => $slideshow_options['js_after_function'],
        'js_end_function'       => $slideshow_options['js_end_function']
    );
foreach ($slideshow_vars as $key => $value) {
    if($value == NULL) {
        $value = "false";
    }
}
print_r($slideshow_vars);
Run Code Online (Sandbox Code Playgroud)

在数组中的许多值中,它们正在输出NULL- 好吧,我需要将它们更改为一个字符串false(此数据正在本地化,然后发送到期望为false的JS文件).当我执行上述操作时,print_r()它实际上没有更新任何内容.

cyp*_*her 6

这是因为foreach通常按值传递数组字段.你需要做的是:

foreach ($slideshow_vars as $key => &$value) {
    if($value == NULL) {
        $value = "false";
    }
}
Run Code Online (Sandbox Code Playgroud)

  • +1就这样,OP很明显这与他的代码有什么不同我在你的回答中说你在`$ value`前面添加了`&`甚至链接到PHP引用的手册页:http:/ /www.php.net/manual/en/language.references.php (2认同)