PHP array_push with key =>值

时间:2011-08-11 08:25:56

标签: php arrays

这是我的代码

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
                )

        )

4 个答案:

答案 0 :(得分:1)

你是说这个吗?

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

答案 1 :(得分:0)

我想,你需要这个:

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

答案 2 :(得分:0)

来自manual page of array_push(强调我的):

  

array_push()将数组视为stack,并将传递的变量推送到数组的末尾。

所以你不能传递密钥。如果要传递密钥,请使用

$yourArray[$theKey] = $theValue;

然后,如果它已经存在,则覆盖$theValue的{​​{1}}或将其附加到数组的末尾。另见:

答案 3 :(得分:0)

我同意其他人的观点。另外,作为php手册说明:

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

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