【问题标题】:How do I fix Notice message on my foreach如何在我的 foreach 上修复通知消息
【发布时间】:2011-02-21 13:37:05
【问题描述】:

这是我的 wordpress 元框 foreach 的示例。

foreach ($meta_box['fields'] as $field) {

        $old = get_post_meta($post_id, $field['id'], true);
        $new = $_POST[$field['id']];

         if (isset($_POST[$field['id']])) {
            update_post_meta($post_id, $field['id'], $new);

        } elseif ('' == $new && $old) {
            delete_post_meta($post_id, $field['id'], $old);
        }
}

如果这里有空输入,我会在$new 得到Notice: Undefined index: 如何解决这个问题?

【问题讨论】:

标签: php wordpress foreach


【解决方案1】:

您需要在调用之前测试 $_POST[$field['id']] 是否已设置,否则会触发该错误。您正在下一行检查它,所以只需将其向上移动即可。

foreach($meta_box['fields'] as $field){
    if(isset($_POST[$field['id']])){
        // POST field sent - update
        $new = $_POST[$field['id']];
        update_post_meta($post_id, $field['id'], $new);

    } else {
        // POST field not sent - delete
        $old = get_post_meta($post_id, $field['id'], true);
        delete_post_meta($post_id, $field['id'], $old);
    }
}

【讨论】:

    【解决方案2】:

    $new = $_POST[$field['id']]; 更改为:

    $new = ( IsSet ( $_POST[$field['id']] ) === true ? $_POST[$field['id']] : 'some default value' );
    

    【讨论】:

      【解决方案3】:

      在初始化 $new 之前你可以检查它是否存在:

      if(isset($_POST[$field['id']])) {
          $new = $_POST[$field['id']];
      }
      else {
          $new = "default";
      }
      

      如果不存在,则将其设置为默认值。

      【讨论】:

      • 你为什么要发布一个与已经发布的答案完全相同的答案?
      • 因为我提交它时没有看到已经插入了一个。除此之外,不写一行更清楚。
      猜你喜欢
      • 2021-09-20
      • 1970-01-01
      • 2022-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多