限制foreach的结果

时间:2016-01-20 04:17:48

标签: php

目前,我正在抓取搜索页面并尝试将其显示在仅显示4个结果的位置,而不是搜索页面上的每个结果。

我的代码在这里。

<?php
$html = file_get_html('http://www.example.com/?s='.$artist.'');
foreach($html->find('div.row > ul > li a') as $element)
{
    //echo 
    $url = ''.$element->href;
    $html2 = file_get_html($url);       
    $image2 = $html2->find('meta[property=og:image]',0);

    // print $image2 = $image2->content;
    $pure = $image2->content;
    $title2 = $html2->find('header.section-header h2 ',0);
    $links = $title2->plaintext;
    // print $title2 = $title2->plaintext;

    print "<li class='album col-md-3 col-sm-6 col-smx-6 col-xs-6 flex' itemprop='itemListElement' itemscope='' itemtype='http://schema.org/MusicAlbum'>
    <meta itemprop='url' content='".$url."'>
    <meta itemprop='numTracks' content='13'>
    <a href='".$url."'>
    <img src='".$pure."' alt='".$links."' title='".$links."' itemprop='thumbnailUrl'>
    <span class='title'><strong class='artist' itemprop='byArtist'>".$links."</strong></span>
    <span class='information'>
    </span>
    </a>
    </li>";
}
?>

这会返回看起来像这样的东西。

enter image description here

但我试图让结果看起来更像这样。

enter image description here

2 个答案:

答案 0 :(得分:2)

在循环之前启动计数器

$i=1;

然后在每次迭代后递增

$i++;

然后检查它是否已达到4并且中断

$i=1;
foreach($test as $value)
{
   if($i>4) 
     break;
   //rest of your code here
   $i++;
}

<强> Fiddle

不,我不会用你的代码更新这个答案,因为这对你来说不是一个学习经历。然后它将成为一个复制粘贴工作,从长远来看它不会帮助你。只需重复几遍,然后将这个简单的解决方案应用到您的代码中,您永远不会忘记它:)

答案 1 :(得分:1)

使用您自己的代码,只需使用计数器(注意差异):

<?php
$html = file_get_html('http://www.example.com/?s='.$artist.'');
$i = 0; // begin counter 
foreach($html->find('div.row > ul > li a') as $element)
{
    if($i > 3) { // this will ensure that you only display 4 results
        break;
    }
    //echo 
    $url = ''.$element->href;
    $html2 = file_get_html($url);       
    $image2 = $html2->find('meta[property=og:image]',0);

    // print $image2 = $image2->content;
    $pure = $image2->content;
    $title2 = $html2->find('header.section-header h2 ',0);
    $links = $title2->plaintext;
    // print $title2 = $title2->plaintext;

    print "<li class='album col-md-3 col-sm-6 col-smx-6 col-xs-6 flex' itemprop='itemListElement' itemscope='' itemtype='http://schema.org/MusicAlbum'>
    <meta itemprop='url' content='".$url."'>
    <meta itemprop='numTracks' content='13'>
    <a href='".$url."'>
    <img src='".$pure."' alt='".$links."' title='".$links."' itemprop='thumbnailUrl'>
    <span class='title'><strong class='artist' itemprop='byArtist'>".$links."</strong></span>
    <span class='information'>
    </span>
    </a>
    </li>";
    $i++; // increment your counter
}
?>