代碼如下
foreach ($url as $val){if ($netbot->fetchlinks($val)){$urlarray[] = $netbot->results;}else{echo "error :".$netbot->error;exit;}}
這裡的$url是一個數組,存放地址
通過snoopy的方法, $netbot->fetchlinks($val)來擷取這個url的所有link
那麼,我想把所有的link放在一個數組中
$netbot->results 返回的是一個一維數組
現在的問題是: $urlarray[] = $netbot->results;
這種方式賦值,會獲得一個多維陣列
裡面的link只有他第一次訪問url的links
我想讓這個$urlarray下標自動轉移.
在擷取第二個url的時候,賦值時,可以繼承上面的下標, 從而將$urlarray轉化為1維數組,
這該如何?呢?
回複討論(解決方案)
if條件裡面再迴圈?
foreach($netbot->results as $v){
$urlarray[] = $v;
}
先不管 $netbot->results 取得的是什麼
你在 $netbot->fetchlinks($val) 失敗後就 exit 了
那麼 $url 中後續的 $val 就沒有機會再 fetchlinks 了
所以不應該 exit 而應該繼續迴圈
你每次 fetchlinks 到的 url 被存放於 $urlarray 並沒有參與後續的尋找
所以至多是 $url 遍曆結束就結束了。這樣取到的是 $url 中可能存在的所有一級串連
看你的需求,似乎應該循著擷取的串連一直深入下去的
假定 $netbot->results 是一個關於串連的一維數組,name
for($i=0; $i
if ($netbot->fetchlinks($val)){ //如果有連結 $url = array_merge($url, $netbot->results); //就將串連加入搜尋隊列 }}
是不是搞錯了break和exit?
樓主放棄了嗎?
應該在if的第一個條件再迴圈