在添加到数组

时间:2017-07-18 10:52:51

标签: php arrays foreach conditional

我无法让这个工作。我使用xpath选择器抓取网站,这将返回38个结果,这些结果将添加到数组$ list中。现在前5个结果和最后3个结果对我来说都没用。我需要的是只将结果6-35添加到数组中。我已经尝试了if,for和while条件的许多不同组合,但似乎无法使其工作。我很想听听我做错了什么,最后让它发挥作用。

$url = "www.theurl.com";
$html = new DOMDocument();
@$html->loadHtmlFile($url);
$xpath = new DOMXPath($html);

$nodelist = $xpath->query("//span[@class='mp-listing-title']");

$list = array();

$i = 0;

foreach ($nodelist as $n) {
  $i++;
}
if ($i >=5 && $i <=35) {
  $value = $n->nodeValue;
  $list[] = $value;
}

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

试试这个,它可以帮到你:

 $url = "www.theurl.com";
 $html = new DOMDocument();
 @$html->loadHtmlFile($url);
 $xpath = new DOMXPath($html);

 $nodelist = $xpath->query("//span[@class='mp-listing-title']");

 $list = array();

 $i = 0;

 foreach ($nodelist as $n) {
   if ($i >=5 && $i <=35) {
     $value = $n->nodeValue;
     $list[] = $value;
   }
   $i++;
 }

答案 1 :(得分:0)

尝试以下方法:

$url = "www.theurl.com";
$html = new DOMDocument();
@$html->loadHtmlFile($url);
$xpath = new DOMXPath($html);

$nodelist = $xpath->query("//span[@class='mp-listing-title']");

$list = array();

$i = 0;

foreach ($nodelist as $n)  {
  if ($i >=5 && $i <=35) {
    $value = $n->nodeValue;
    $list[] = $value;
  }
  $i++;
}

你的条件不在循环中。