添加到存储在WordPress _options中的数组

时间:2015-07-30 16:38:26

标签: php arrays wordpress

我想知道一种在PHP中添加数组的方法。我不确定为什么,但是当我运行我的代码时,它不是添加到数组中,而是用新信息替换它。

用户可以输入2个将存储在数组中的值。我希望能够查看数组并获取存储的所有值。他们通过表单一次添加一个。这就是我所拥有的:

$variable_option = esc_html( $_POST['variable_option'] );
$variable_value = esc_html( $_POST['variable_value'] );

$variables[$variable_option] = $variable_value;

update_option( 'bhdesign_variables', $variables );

它可以在数组中存储值和选项,但是如果我再次提交表单,它会删除那里的内容并对其进行更改。为什么这样做?

2 个答案:

答案 0 :(得分:1)

update_option函数执行两项操作(最多):

  1. 签入数据库以查看是否存在名为"bhdesign_variables"的选项。如果此选项未退出,则会创建一个具有此名称的新条目,并将存储您传递的变量($variables)。如果该选项已存在于数据库中,则转到下一步:
  2. 使用您传递的新值更新选项的值。这意味着它会覆盖您拥有的任何内容。
  3. 因此,如果要保留以前的值,首先需要从数据库中获取现有数组,向其中添加新值,然后使用新数组更新选项。

    这样的事情:

    $variable_option = esc_html( $_POST['variable_option'] );
    $variable_value = esc_html( $_POST['variable_value'] );
    
    $variables = get_option( 'bhdesign_variables' );   // get the existing array
    
    $variables[$variable_option] = $variable_value;    // add new key to array
    
    update_option( 'bhdesign_variables', $variables );  // write to database
    

答案 1 :(得分:0)

希望不要误解这个问题 为什么只是将值添加到数组

$variable[] = esc_html( $_POST['variable_option'] );
$variable[] = esc_html( $_POST['variable_value'] );