如何在用户元中更新数组中的特定对象?

时间:2012-03-08 作者:Zach Reed

下面我有一个数组,用于设置自定义用户元(lh_userbadges) 在里面user_meta 但我不确定以后如何只更新阵列的一部分。。。

$lh_user_badges = array(
    \'lh_userbadge_comments25\' => \'0\',
    \'lh_userbadge_comments50\' => \'0\',
    \'lh_userbadge_comments75\' => \'0\',
    \'lh_userbadge_comments100\' => \'0\',
    \'lh_userbadge_comments150\' => \'0\',
    \'lh_userbadge_submited\' => \'0\',
    //etc.
);
update_user_meta($user_id, \'lh_userbadges\', $lh_user_badges);
根据我在其他堆栈溢出问题中收集的信息(How to update serialized data in the user meta data 这是一个很好的例子,但它只是在增加,我不想这样。我只想设置一次特定的数字。),我想大致是这样的,但我不确定。。。。

$meta_value = get_user_meta($user_id, \'lh_userbadges\', false);
$meta_value[\'lh_userbadge_comments25\']  //....?
例如,我只想更新对象lh_userbadge_comments25 从…起lh_userbadges 从0到(假设)25,我将如何做到这一点?我想我的第二部分代码是正确的,但我不知道。。。

有什么想法吗?Also, I\'m not sure if this is the best way to do it but I figured this would save database clutter if I did it in this format rather than each type being it\'s own meta item.

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

只需为1h_userbadge_comments25 钥匙

就像这样。。。

<?php
$meta_value = get_user_meta($user_id, \'lh_userbadges\', false);
// just assign this key a new value
$meta_value[\'lh_userbadge_comments25\'] = 25;
然后再保存一次。

<?php
update_user_meta( $user_id, \'lh_userbadges\', $meta_value );
是否将所有这些值存储为数组是正确的方法,这实际上取决于您。你需要像这样做很多改变吗?所有这些价值观一起有意义吗?如果不知道你在做什么,这是一个很难回答的问题。

结束