注意:未定义的索引:使用isset进行修复

时间:2015-02-09 作者:Rasel Ahmed

我有一个变量存储这样的数据。

$eddreldlc_auto_play = array(
    \'loop_true\' => array(
        \'value\' => \'true\',
        \'label\' => \'True\'
    ),
    \'loop_false\' => array(
        \'value\' => \'false\',
        \'label\' => \'False\'
    )
);
现在,我使用foreach获取数组数据,如下所示

<?php
  $settings = get_option( \'eddreldlc_options\', $eddreldlc_options );
  foreach( $eddreldlc_auto_play as $layout ) :
?>
<input type="radio" id="<?php echo $layout[\'value\']; ?>" name="eddreldlc_options[eddreldlc_auto_play]" value="<?php esc_attr_e( $layout[\'value\'] ); ?>" <?php checked( $settings[\'eddreldlc_auto_play\'], $layout[\'value\'] ); ?> />
<label for="<?php echo $layout[\'value\']; ?>"><?php echo $layout[\'label\']; ?></label><br />
<?php endforeach; ?>
但是,我有一个错误:Notice: Undefined index: eddreldlc_auto_play

我在google上搜索到一种使用php-isset修复的方法。已使用此选项,但仍出现错误。有什么想法吗?

1 个回复
最合适的回答,由SO网友:Privateer 整理而成

你做这件事的方式有些问题。

下一行读取您在中的设置。。。

$settings = get_option( \'eddreldlc_options\', $eddreldlc_options );
因此,设置如下所示:

array(
    \'loop_true\' => array(
        \'value\' => \'true\',
        \'label\' => \'True\'
    ),
    \'loop_false\' => array(
        \'value\' => \'false\',
        \'label\' => \'False\'
    )
);
您的循环如下所示

foreach( $eddreldlc_auto_play as $layout )
因此,您实际得到的是以下各项$layout 变量

$layout = array( 
    \'value\' => \'true\',
    \'label\' => \'True\'
);
然而,您正在引用以下内容进行检查:

$settings[\'eddreldlc_auto_play\']
由于您的$settings 变量

根据你的代码判断,你的意思可能是

checked( $layout[\'value\'], \'true\' );
当然,该代码中还有一些其他问题。我将其改写如下:

<?php
    $settings = get_option( \'eddreldlc_options\', $eddreldlc_options );
    foreach( $eddreldlc_auto_play as $layout ) {
        $value = esc_attr( $layout[\'value\'] );
        $checked = checked( $layout[\'value\'], \'true\', false );
        echo <<<HTML
<input type="radio" id="eddreldlc_layout_{$layout[\'value\']}" name="eddreldlc_autoplay" value="{$value}" {$checked} />
<label for="eddreldlc_layout_{$layout[\'value\']}">{$layout[\'label\']}</label><br />
HTML;

    }
您的id很容易被踩踏,因此我将其变得更加独特。您在广播中的名字看起来像是您在站点中设置了踩踏您声称正在阅读的阵列的选项,因此我更改了名称以避免混淆预期内容
  • 我个人更喜欢heredoc符号,因为它使阅读更容易,不管怎样,修复引用的索引,您应该可以很好地使用。

  • 结束

    相关推荐

    “Comments.php”在可湿性粉剂管理中编辑后不可用

    在主题“Point”中,“comments.php”页面没有正确翻译。我想在WP管理编辑器中手动翻译标签(法语),但是when I update the file, the comments doesn\'t appear anymore on my website.然而,我只是改变了标签。知道我做错了什么吗?此问题是否与主题或我的WP安装相关?Here is the code before: <?php // Do not delete these lines if