PHP array_push with key => value


PHP array_push with key => value

这是我的代码

foreach ($query1 as $post)
{
    foreach ($query2 as $data)
    {
        if ($post->post_id == $data->post_id)
        {
            // add all actions from a post to its array
            if (!isset($post->post_meta))
            {
                $post->post_meta = array( strtolower($data->post_meta_key) => $data->post_meta_value );
            }
            else
            {
                array_push( $post->post_meta[strtolower($data->post_meta_key)] = $data->post_meta_value );
            }
        }
    }
}

我不知道如何修复代码。我没有得到值,只有键,还有一些错误。

array_push()期望至少2个参数,其中1个给定

它应该输出如下内容

 [0] => stdClass Object
        (
            [post_id] => 218
            [post_meta] => Array
                (
                    [flagged] => 0
                    [deleted] => 1
                )
        )

你是这个意思吗?

$post->post_meta[strtolower($data->post_meta_key)] = $data->post_meta_value;

我想你需要这个:

 $post->post_meta[strtolower($data->post_meta_key)] = $data->post_meta_value;

来自array_push(重点是我的)的手册页:

array_push()将数组视为堆栈,并将传递的变量压入数组末尾。

所以你不能传递一个键。如果您想传递一个密钥,请使用

$yourArray[$theKey] = $theValue;

,如果$theKey已经存在,它将覆盖$theValue,或者将其附加到数组的末尾。还看到:

  • http://www.php.net/manual/en/language.types.array.php

我同意别人的看法。此外,如php手册所述:

注意:如果您使用array_push()向数组中添加一个元素,那么最好使用$array[] =,因为这样就没有调用函数的开销。

http://php.net/manual/en/function.array-push.php