将值保存到foreach php中的数组只显示最后一个循环

时间:2017-06-09 14:10:51

标签: php arrays multidimensional-array foreach

我完全使用XPath提取我想要的文本。我想将这些值存储到$items数组中,但我得到的只是最后一个循环的值。我试图将$items = array();放在foreach ($pdo->query($sql) as $row) {之外,但这没有帮助。我已经看到了其他有关该问题的帖子,但这些解决方案对我也没有帮助。

...
foreach ($pdo->query($sql) as $row) {

$items = array();

    $tableMainQuery = '//h3[@class="clk"]';
    $nodes = $xpath->query( $tableMainQuery );

        foreach( $nodes as $node ) {

            $result = htmlentities( getInnerHTML( $node ) );

                $content = $result;
                $start = 'href="';
                $end = '"';
                $website = getBetween($content,$start,$end); 
                $items[url] = $website;                         
        }

    $tm_street = '//span[contains(@class,"result_url_heading")]';
    $nodes_tm_street = $xpath->query( $tm_street );

        foreach( $nodes_tm_street as $node_tm_street ) {

            $street = ( getInnerHTML( $node_tm_street ) );
            $items[name] = $street;

        }

}
希望你能帮助我!谢谢!

2 个答案:

答案 0 :(得分:0)

你可以覆盖每个tiem的数组值,修改你的代码,

$items[url] = $website;$items['url'][] = $website;
$items[name] = $street;$items['name'][] = $street;

答案 1 :(得分:0)

你只是在循环中得到最后一个结果,因为你要覆盖写入变量的所有内容。

这都是关于PHP运营商的;)

对所需的变量进行尝试:

$items[name] += $street;

这会将任何其他数据添加到变量中,而不会在每次循环时覆盖其中的内容。

我希望这会有所帮助。