我在使用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
)
)
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);