限制foreach循环中的输出

时间:2013-07-24 20:00:55

标签: php multidimensional-array foreach conditional-statements

我有一个名为$alternative的多维数组,其中包含单词。

这个数组是动态生成的,有时可能只有3个单词,其他时候可能有300个单词。

在下面的代码中,我将数组中的单词输出到网页。

我怎么能把输出限制为10个字?

foreach ($alternative as $test)
    {
        foreach ($test as $test2)
        {
        $test3 = ucwords($test2); //Capitalizes first letter of each word
        printf('<li><a href="related.php?query=%1$s" title="%1$s" >%1$s</a></li>', $test3);

        }

    }

目前,在某些情况下,显示的单词太多,我想将其限制为十个单词。

我想不出办法做到这一点。有人有什么建议吗?

谢谢你们。

4 个答案:

答案 0 :(得分:3)

$counter = 0;
foreach ($alternative as $test) {
    foreach ($test as $test2) {
        $test3 = ucwords($test2); //Capitalizes first letter of each word
        printf('<li><a href="related.php?query=%1$s" title="%1$s" >%1$s</a></li>', $test3);

        if (++$counter > 10) {
            break 2;
        }
    }
}

答案 1 :(得分:2)

你可以把柜台放在里面,如:

$counter = 0 ;
 foreach ($alternative as $test)
        {
            foreach ($test as $test2)
            {
            $test3 = ucwords($test2); //Capitalizes first letter of each word
            printf('<li><a href="related.php?query=%1$s" title="%1$s" >%1$s</a></li>',       test3);
            if(counter == 9 ) {
            break;
            }else{
               counter++;
            }
            }

        }

答案 2 :(得分:1)

简单。实施一个柜台。以下实现将为每组替代对象吐出10个<li>个字。

foreach ($alternative as $test)
{
    $count = 0;
    foreach ($test as $test2)
    {
        if ($count >= 10) break;
        $test3 = ucwords($test2); //Capitalizes first letter of each word
        printf('<li><a href="related.php?query=%1$s" title="%1$s" >%1$s</a></li>',$test3);
        $count++;
    }

}

总共只有10 <li>个元素,请看另一个答案!

答案 3 :(得分:1)

您可以简单地使用计数器并在每次打印单词时递增计数器。这是一个简单的例子:

$max_words = 10;
$nb_words = 0;

foreach ($alternative as $test)
{
    foreach ($test as $test2)
    {
        $test3 = ucwords($test2); //Capitalizes first letter of each word
        printf('<li><a href="related.php?query=%1$s" title="%1$s" >%1$s</a></li>', $test3);
        $nb_words++;

        if($nb_words >= $max_words)
            break;
    }
    if($nb_words >= $max_words)
        break;
}