Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 试图向数组添加新的key=>value对,但它似乎创建并嵌套了新的数组_Php_Arrays_Wordpress - Fatal编程技术网

Php 试图向数组添加新的key=>value对,但它似乎创建并嵌套了新的数组

Php 试图向数组添加新的key=>value对,但它似乎创建并嵌套了新的数组,php,arrays,wordpress,Php,Arrays,Wordpress,我试图将新的key=>值对添加到我拥有的数组中。键是对应于用户ID的整数。这些值最初只是请求的字符串 所讨论的数组以序列化形式存储在另一个数组用户的索引0处,该数组用户参与与我正在修改的帖子相关的更大的元数据数组 我的过程是这样的: 从某个WordPress函数中提取可能包含数组的变量。如果没有数组,那么这个变量就是空的,我们就不会看到错误。 如果数组变量为非空且不包含等于用户ID的键,则添加键=>值对。 如果数组变量为非空且包含与用户ID相等的密钥,则打印用户已存在。 在所有其他情况下,即当数

我试图将新的key=>值对添加到我拥有的数组中。键是对应于用户ID的整数。这些值最初只是请求的字符串

所讨论的数组以序列化形式存储在另一个数组用户的索引0处,该数组用户参与与我正在修改的帖子相关的更大的元数据数组

我的过程是这样的:

从某个WordPress函数中提取可能包含数组的变量。如果没有数组,那么这个变量就是空的,我们就不会看到错误。 如果数组变量为非空且不包含等于用户ID的键,则添加键=>值对。 如果数组变量为非空且包含与用户ID相等的密钥,则打印用户已存在。 在所有其他情况下,即当数组变量为空时,创建一个新数组并添加第一个key=>value对。 然而,通过这个过程,我看到所有新添加的数组嵌套在第一个数组中,然后是第二个数组,依此类推。当我使用print\r$eventUsers测试数组的内容时,我会看到这种输出:

Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [4] => requested
                )

            [4] => requested
        )

    [4] => requested
)
对于上下文,以下是用户在更新\u post\u元函数自动序列化的所有post元数据的较大数组中的外观:

[users_attending] => Array
        (
            [0] => a:2:{i:0;a:2:{i:0;a:1:{i:4;s:9:"requested";}i:4;s:9:"requested";}i:4;s:9:"requested";}
        )
以下是相关代码:

$currentUser = get_current_user_ID(); //let's say this is 4 for now
$eventUsers = get_post_meta(get_the_ID(), 'users_attending');
if (!empty($eventUsers) && !array_key_exists($currentUser, $eventUsers)) {
    $eventUsers[$currentUser] = "requested";
    update_post_meta(get_the_ID(), 'users_attending', $eventUsers);
    //array exists but user is not yet attending
} elseif (!empty($eventUsers) && array_key_exists($currentUser, $eventUsers)) {
    //user is already attending
} else {
    $eventUsers = array();
    $eventUsers[$currentUser] = "requested";
    update_post_meta(get_the_ID(), 'users_attending', $eventUsers); //note that this adds the metadata key and value if it's not already there
    //first user attending
}

如何确保键=>值对被添加到用户零索引内的第一个数组,而不是我看到的嵌套行为?

程序看起来正常,请尝试删除以前运行的数据


还考虑函数GET*PaseMeta可能会返回一个数组而不是所需的数组。

尽管已经清除了先前的运行数据,但还是看到了这个问题。至于第二点,我相信它确实返回了一个数组,但是只返回了一个元素,这个元素本身就包含了我的序列化数组。尽管数组数组是一个元素,但我没有指定零索引,这导致了这种行为。据我所知,我设法解决了这个问题。谢谢很高兴我能提供帮助,请确保通过帮助他人完成任务来向前支付!:D