2012-05-05 41 views
1

我有兩個foreach循環。一個給出image href="URL"s,另一個給出image src="URL"s如何將兩個'foreach'代碼一起運行以獲得一個輸出?

如何將這兩個循環結合在一起並顯示圖像?

我的代碼這使圖像的HREF:

foreach($doc->getElementsByTagName('a') as $a){ 
    foreach($a->getElementsByTagName('img') as $img){ 
     echo $a->getAttribute('href'); 
    } 
} 

我的代碼這使圖像的SRC:

foreach($html->find('img') as $e) 
    echo $e->src . '<br>'; 
+0

夫婦:1)'$ html'和'$ doc'是來自相同的原始HTML源碼,還是來自兩個獨立的源碼? 2)正如Beenish指出的那樣,「href」並不指向圖像,它指向圖像鏈接的任何位置,所以在這種情況下,您需要圖像位置還是鏈接或兩者? – Anthony

+0

我剛剛注意到'find()'是第三方庫的一種方法。你是否在'$ doc'和'$ html'使用相同的庫?他們是不同的來源?是否有理由將PHP的DOM庫用於'$ doc'? – Anthony

回答

1

嘗試以下。

foreach($doc->getElementsByTagName('a') as $a){ 
    echo $a->getAttribute('href'); 
    foreach($a->getElementsByTagName('img') as $img){ 
     echo $img->src . '<br>'; 
    } 
} 

您的代碼爲每個圖像回顯a->href。如果這就是你想要做的,然後嘗試以下。

foreach($doc->getElementsByTagName('a') as $a){ 
    foreach($a->getElementsByTagName('img') as $img){ 
     echo $a->getAttribute('href'); 
     echo $img->src . '<br>'; 
    } 
} 
+0

我認爲他們可能是兩個不同的對象使用兩個完全不同的類,所以你的第一部分可能無法正常工作。但關於href vs src的好消息。 – Anthony

1

我覺得這個就如何讓這一切在一個循環中完成,但在那之前,這裏是如何讓他們都到一個數組:問題

$image_links = array(); 

foreach($doc->getElementsByTagName('a') as $a){ 
    foreach($a->getElementsByTagName('img') as $img){ 
     $image_links[] = $a->getAttribute('href'); 
    } 
} 

foreach($html->find('img') as $e) 
    $image_links[] = $e->src; 
} 
相關問題