我使用 foreach 循环,但它总是在第一个循环中给出一个奇怪的结果,但其他的都很好,所以我想删除第一个循环并从第二个循环继续......
我的代码是
foreach($doc->getElementsByTagName('a') as $a){
foreach($a->getElementsByTagName('img') as $img){
echo $a->getAttribute('href');
echo $img->src . '<br>';
}
}
我使用 foreach 循环,但它总是在第一个循环中给出一个奇怪的结果,但其他的都很好,所以我想删除第一个循环并从第二个循环继续......
我的代码是
foreach($doc->getElementsByTagName('a') as $a){
foreach($a->getElementsByTagName('img') as $img){
echo $a->getAttribute('href');
echo $img->src . '<br>';
}
}
$counter = 0;
foreach($doc->getElementsByTagName('a') as $a){
foreach($a->getElementsByTagName('img') as $img){
if ($counter++ == 0) continue;
echo $a->getAttribute('href');
echo $img->src . '<br>';
}
}
为了跳过第一个循环,我能想到的最简单的方法是使用标志
前任:
$b = false;
foreach( ...) {
if(!$b) { //edited for accuracy
$b = true;
continue;
}
}
尝试这样的事情
foreach($doc->getElementsByTagName('a') as $a)
{
$count = 0;
foreach($a->getElementsByTagName('img') as $img)
{
if(count == 0)
{
$count++;
continue;
}
echo $a->getAttribute('href');
echo $img->src . '<br>';
}
}
$nm = 0;
foreach($doc->getElementsByTagName('a') as $a){
if($nm == 1){
foreach($a->getElementsByTagName('img') as $img){
echo $a->getAttribute('href');
echo $img->src . '<br>';
}
}
$nm=1;
}
如果您不想定义额外的计数器:
foreach($doc->getElementsByTagName('a') as $a){
foreach($a->getElementsByTagName('img') as $img){
if ( $a === reset( $doc->getElementsByTagName('a') ) && $img === reset( $a->getElementsByTagName('img') ) ) continue;
echo $a->getAttribute('href');
echo $img->src . '<br>';
}
}
我不知道哪个会更好。
你也可以在 PHP 中尝试数组切片:
foreach(array_slice($doc->getElementsByTagName('a'),1) as $a){
foreach(array_slice($a->getElementsByTagName('img'),1) as $img){
echo $a->getAttribute('href');
echo $img->src . '<br>';
}
}