【问题标题】:PHP: Get array from nested foreach loopsPHP:从嵌套的 foreach 循环中获取数组
【发布时间】:2015-01-16 02:56:54
【问题描述】:

我正在尝试从 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 ]

我放了 [ 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
    )

)

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

谢谢

【问题讨论】:

    标签: php arrays foreach


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • 我要改成哪个数组?
        【解决方案4】:

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

        它在循环内输出良好,因为您每次都在打印它。一旦它在循环之外,“站点”数组键将重置为输出的第一个值,因为第二个(内部)循环在最后一次运行时停止。您将必须拥有一个动态数组键,以按照您想要的方式保留所有值。

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

        【讨论】:

          猜你喜欢
          • 2016-07-25
          • 2015-04-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-06-19
          • 2021-09-06
          • 2015-07-06
          • 1970-01-01
          相关资源
          最近更新 更多