结果保存在两个数组中


Result saves in two arrays

我在那里玩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" 
}

为什么?我做错了什么?

它不保存在两个数组中。您将在每个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" 
}

为什么认为它在两个数组中?var_dump在循环中,所以每次迭代时都会转储它。