0

我正在玩 foreach 和 Simple HTML dom,我试图保存一些指向数组的链接。但我的问题是结果保存在两个数组而不是一个数组中。

foreach($html->find('div[class^=voucher success]') as $q)
    {
        @$var = $q->find('a', 0)->href;

        $pos = strpos($var, "/ut/");

        if($pos === false)
        {
            $item[] = $var;
        }

        var_dump($item);
    }

倾倒:

array(1) { 
[0]=> string(10) "/hm?v=2726" } 
array(2) { 
[0]=> string(10) "/hm?v=2726" [1]=> string(10) "/hm?v=2732" 
}

这是为什么?我做错了什么?

4

2 回答 2

0

为什么你认为它在两个数组中?您的 var_dump 在您的循环内,因此每次迭代时它只是在转储。

于 2013-07-31T22:37:44.717 回答
0

它没有保存在两个数组中。您在每个 foreach 循环结束时转储数据。因此它转储了两次,因为 foreach 中有两个循环。

要查看 $item 的最终结果,您需要在 foreach 之后转储。

foreach($html->find('div[class^=voucher success]') as $q)
    {
        @$var = $q->find('a', 0)->href;

        $pos = strpos($var, "/ut/");

        if($pos === false)
        {
            $item[] = $var;
        }
    }

var_dump($item);

现在的输出是:

array(2) { 
[0]=> string(10) "/hm?v=2726" [1]=> string(10) "/hm?v=2732" 
}
于 2013-07-31T22:38:58.287 回答