我正在尝试更改保存在post meta中的关联数组的特定键的值。以下是我的数组保存在自定义字段中的方式:
Array (
[0] => Array (
[321] => Zedity is an innovative content Editor to create posts or pages
)
[1] => Array (
[310] => A shortcode that includes other posts
)
)
以下是我尝试更新键321的值的方式:
global $post;
$postid = $post->ID;
$add_to_ID = $_POST[\'wpd_plugin_note_id\'];
$note = $_POST[\'wpd_plugin_note\'];
$existing_list = get_post_meta($postid, \'my_list_items\', TRUE );
foreach ($existing_list as $key => $value) {
$existing_list[$key][$add_to_ID] = $note;
}
update_post_meta($postid,\'my_list_items\',$existing_list);
它可以工作,但在更新之后,数组如下所示,不是更新键321的值,而是将键=值对添加2次:
Array (
[0] => Array (
[321] => my new value for 321
)
[1] => Array (
[310] => A shortcode that includes other posts
[321] => my new value for 321
)
)
有人能告诉我我做错了什么吗?谢谢
最合适的回答,由SO网友:tfrommen 整理而成
这是纯PHP(逻辑):
foreach ($existing_list as $key => $value)
if (isset($existing_list[$key][$add_to_ID]))
$existing_list[$key][$add_to_ID] = $note;
您之前所做的不是为每个元素使用键321更新子元素,而是
set 每个元素都具有特定键的子元素—本质上是:在已经定义的地方更新,否则定义。