0

我有一个看起来像这样并存储在变量中的数组对象$named_array

Array
(
    [results] => Array
        (
            [0] => Array
                (
                    [date] => 2013-15-6
                    [position] => 5
                    [person] => John
                )

            [1] => Array
                (
                    [date] => 2013-15-6
                    [position] => 3
                    [person] => Alex
                )

        )

)

另一个名为的数组$post是一个名为 WordPress 的 post 对象数组,$posts = get_posts(array(....然后我有一个 foreach 每个循环,其中 $post 是变量。

在我的 foreach 循环中,我尝试了以下方法来组合数组,但它不起作用。

$combinedData = array_merge($post, $named_array);
print_r($combinedData);

我可以使用 print_r($post); 查看我的帖子对象数组 在 foreach 循环以及 named_array 中。将 named_array 添加到 post 数组的正确函数是什么?

谢谢

4

4 回答 4

1

$posts正如你提到的,是一个对象数组

$post是一个对象,而不是一个数组,所以你不能使用array_merge()

如果要将结果作为新属性添加到$post,正确的方法是:

$post->results = $named_array['results'];
于 2013-08-20T05:06:24.347 回答
1

如果 $post 是一个对象,您可以添加一个名为 results 的数组

$post->results = Array
    (
        [0] => Array
            (
                [date] => 2013-15-6
                [position] => 5
                [person] => John
            )

        [1] => Array
            (
                [date] => 2013-15-6
                [position] => 3
                [person] => Alex
            )

    )

或者$post->results = $named_array['results'];

于 2013-08-20T04:58:59.350 回答
0

http://php.net/manual/en/function.array-merge-recursive.php Try this instead of array_merge

于 2013-08-20T05:02:29.280 回答
0

在这种情况下,在foreach 循环中使用 array_merge 是没有意义的。您使用 array_merge 附加第二个数组覆盖相同的键。您将 foreach 用于适用于每个元素的数组操作。

您没有显示 $post 数组的外观。所以我只能猜测。

$combinedData = array_merge ( $post, $named_array );

已经将命名数组附加到 $post。也许你想要这个?

array_shift ( $named_array, $post ); 

它假定 post 数组看起来像命名数组的一个元素。

于 2013-08-20T05:21:51.437 回答