【问题标题】:PHP: array modifications that persist beyond the scope of a foreach loopPHP:超出 foreach 循环范围的数组修改
【发布时间】:2010-10-07 14:18:35
【问题描述】:

如何将新的键/值对添加到嵌套 foreach 循环内的现有数组中,并使该对在循环范围之外持续存在?

<?PHP
    include('magpierss/rss_fetch.inc');
    /*
        one, two, skip a few...
        $urls is an associative array with 
        database indices as keys and 
        URLs as values
    */

    foreach ($urls as $url_hsh)
    {
        $feed_id = $url_hsh[0];
        $url     = $url_hsh[1];

        echo $feed_id . "<br/>" . $url . "<br/>"; // works as expected

        $rss = fetch_rss($url); // from 'magpierss/rss_fetch.inc' above

        foreach ($rss->items as $item)
        {
            $item['feed_id'] = $feed_id;
            echo $item['feed_id'] . "<br/>"; // works as expected
        }

        foreach ($rss->items as $item)
        {
            echo $item['feed_id'] . "<br/>"; // nuthin..... 
        }
    }
?>

谢谢

【问题讨论】:

    标签: php arrays loops scope


    【解决方案1】:

    如果我理解正确,你想要的是这个(对于第一个循环):

    foreach ($rss->items as &$item) {
    

    &amp; 将使$item 成为参考,您对其所做的任何更改都将反映在$rss-&gt;items

    【讨论】:

    • 谢谢 我不知道我遇到了多少次这个问题。可以从 $item 读取但不能写入它。那是因为我猜它会复制。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-07
    • 2017-06-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-05
    • 1970-01-01
    相关资源
    最近更新 更多