5

私は foreach ループを使用していますが、最初のループでは常に奇妙な結果が得られますが、他のループは問題ないため、最初のループを削除して 2 番目から続行したいと考えています...

私のコードは

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

6 に答える 6

14
$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>';
}
}
于 2012-05-05T19:42:43.010 に答える
14

最初のループをスキップするために私が考えることができる最も簡単な方法は、フラグを使用することです

元:

 $b = false;
 foreach( ...) {
    if(!$b) {       //edited for accuracy
       $b = true;
       continue;
    }
 }
于 2012-05-05T19:44:44.333 に答える
3

このようなことを試してください

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>';
    }
}
于 2012-05-05T19:44:22.830 に答える
1
$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;
}
于 2012-05-05T19:43:36.243 に答える
0

余分なカウンターを定義したくない場合:

    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>';
    }
}

どちらがより良いパフォーマンスを発揮するかはわかりません。

于 2020-08-11T19:16:02.633 に答える