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

PHP: Get array from nested foreach loops

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

我的 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
    )

)

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

谢谢

你的问题是你正在使用 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";
    }
}

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

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

多维数组当然是一种选择。

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

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

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

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