PHP:从嵌套的foreach循环中获取数组


PHP: Get array from nested foreach loops

我正在尝试从rss提要中获取项目,以便我可以在我的博客上显示它们。出于某种原因,当我 foreach 循环之外print_r一个数组时,它只显示一个项目,而不是应该存在的两个项目。

我的foreach看起来像这样:

$arr_postContent = array();
foreach ($feed as $row) {
    $feedid = $row->id;
    $feedurl = $row->blogUrl;
    foreach ($rss->getElementsByTagName('item') as $node) {
        $item = array ( 
            'title' => $node->getElementsByTagName('title')->item(0)->nodeValue,
            'link' => $node->getElementsByTagName('link')->item(0)->nodeValue,
            );

        $postContent = array('link' => $item['link'], 'title' => $item['title']);
        $arr_postContent['site'] = $postContent;
    }
 [ STEP ONE ]
}
[ STEP TWO ]
在我放置[步骤

一]和[步骤二]的地方,我放置了代码:

echo '<pre>';
print_r($arr_postContent);
echo '</pre>';

[ 第一步 ] 给我 :

Array
(
[site] => Array
    (
        [link] => siteurl1
        [title] => site title1
    )
)
Array
(
[site] => Array
    (
        [link] => siteurl2
        [title] => site title2
    )
)

[ 第二步 ] 给我:

 Array
(
[site] => Array
    (
        [link] => siteurl1
        [title] => site title1
    )
)

有人可以告诉我为什么它只给我一个结果,并告诉我如何让它们在 [ 第二步 ] 中输出?

谢谢

数组键必须是唯一的。 因为如果您两次使用相同的键,它将覆盖该键的先前值。 这就是为什么[第二步]只给你一个结果。

多维数组肯定是一种选择。

$arr_postContent[]['site'] = $postContent;

[site] 数组中必须有一个多维数组。现在它只是一个维度。

你的问题是你正在使用item(0)

/* foreach example 4: multi-dimensional arrays */
$a = array();
$a[0][0] = "a";
$a[0][1] = "b";
$a[1][0] = "y";
$a[1][1] = "z";
foreach ($a as $v1) {
    foreach ($v1 as $v2) {
        echo "$v2'n";
    }
}

你的问题出在哪里: $arr_postContent['site'] = $postContent;

它在循环内输出正常,因为您每次都打印它。一旦它位于循环之外,"site"数组键将重置为输出的第一个值,因为第二个(内部)循环在最后一次运行时停止。您必须有一个动态数组键才能按预期方式保留所有值。

在不知道您的输入值/格式的情况下,我无法告诉您这是否是一个明确的答案。但是浏览代码,这就是我相信正在发生的事情。希望这有帮助!