0

这是我的代码

foreach($html->find('ul.listings li a') as $tvshow)
    $tvshows=preg_replace('/<span[^>]*>([\s\S]*?)<\/span[^>]*>/', '', $tvshow->innertext);
foreach($html->find('li a span.epnum') as $e)

    $query=mysql_query("insert into tvshow(count,author,tvshowname,imdblink,tvshowlink,description,year,image,imagetype,website,date,rating) 
              values('$count','$author','$tvshows','$imdblink','$tvshow->href','$tvshowdescription','$e->innertext','$tvshowname','$tvshowtype','$website','$date','$rating')");
    if(!$query)
    {
        die(mysql_error());
    }

这里 $tvshows,$tvshow->href 正在重复,我不希望它们重复。不要担心代码一切都是正确的,只有使用两个 foreach 语句才会重复。请让代码不重复。

4

1 回答 1

2

花括号的威力...

foreach($html->find('ul.listings li a') as $tvshow) {
    $tvshows=preg_replace('/<span[^>]*>([\s\S]*?)<\/span[^>]*>/', '', $tvshow->innertext);

    foreach($html->find('li a span.epnum') as $e) {

        $query=mysql_query("insert into tvshow(count,author,tvshowname,imdblink,tvshowlink,description,year,image,imagetype,website,date,rating) 
                  values('$count','$author','$tvshows','$imdblink','$tvshow->href','$tvshowdescription','$e->innertext','$tvshowname','$tvshowtype','$website','$date','$rating')");
        if(!$query)
        {
            die(mysql_error());
        }
    }
}

我怀疑你的 foreach 没有嵌套,因为你没有像你应该有的那样用大括号括起来。

按照您编写它们的方式,它会将它们解释为完全独立的循环。

循环 1:

foreach($html->find('ul.listings li a') as $tvshow) 
    $tvshows=preg_replace('/<span[^>]*>([\s\S]*?)<\/span[^>]*>/', '', $tvshow->innertext);

循环 2:

    foreach($html->find('li a span.epnum') as $e) 

        $query=mysql_query("insert into tvshow(count,author,tvshowname,imdblink,tvshowlink,description,year,image,imagetype,website,date,rating) 
                  values('$count','$author','$tvshows','$imdblink','$tvshow->href','$tvshowdescription','$e->innertext','$tvshowname','$tvshowtype','$website','$date','$rating')");
        if(!$query)
        {
            die(mysql_error());
        }

说得通?

于 2012-09-27T19:57:00.777 回答