这是我的代码
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
)
)
答案 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[] =
,因为这样就不会有调用函数的开销。