具有UPDATE_POST_META的多维数组问题

时间:2013-08-19 作者:rob_was_taken

我在使用update\\u post\\u meta保存多维数组时遇到问题。

这是我的代码($上面设置了meta\\U key和$userID):

    $read_notices = get_user_meta($userID, $meta_key);

    if (null === $read_notices) {
        $read_notices = array();
    }

    $read_notices[] = $postID;

    update_user_meta($userID, $meta_key, $read_notices);
我的问题是,数据每次都在嵌套,所以我最终会。。。有什么想法吗?

Array
(
    [0] => Array
        (
        [0] => Array
            (
                [0] => Array
                    (
                        [0] => 1823
                    )

                [1] => 1762
            )

        [1] => 1762
    )
)

1 个回复
SO网友:gmazzap

第一次af allif (null === $read_notices) 永远不会true, 因为get_user_meta 返回false或空字符串或空数组。从不返回null。

正确的方法是检查它是否为空:

if ( empty ($read_notices) ) { ... }
那么你的问题是get_user_meta 未将第三个参数传递为true 将返回多维数组。

因此,适合您的正确代码范围是:

$read_notices = get_user_meta($userID, $meta_key, true) ? : array();
$prev = $read_notices;
$read_notices[] = $postID;
update_user_meta($userID, $meta_key, $read_notices, $prev);

结束

相关推荐