0

私は foreach と Simple HTML dom をいじっています。いくつかのリンクを配列に保存しようとしています。しかし、私の問題は、結果が 1 つの配列ではなく 2 つの配列に保存されることです。

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

2 つの配列に保存されていません。すべての foreach ループの最後にデータをダンプしています。したがって、foreach に 2 つのループがあるため、2 回ダンプします。

$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 に答える
0

なぜ2つの配列になっていると思いますか? var_dump はループ内にあるため、反復するたびにダンプされます。

于 2013-07-31T22:37:44.717 に答える