Ограничение вывода в цикле foreach

У меня есть многомерный массив, называемый $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); } } 

В настоящий момент в некоторых случаях отображается слишком много слов, и я хотел бы ограничить это до десяти слов.

Я не могу придумать, как это сделать. Есть ли у кого-нибудь предложения?

Спасибо, парни.

Solutions Collecting From Web of "Ограничение вывода в цикле foreach"

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

вы можете поставить счетчик внутри, как:

 $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++; } } } 

Просто. Внедрите счетчик. В приведенной ниже реализации будет выложено 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> элементов, посмотрите на другой ответ!

Вы можете просто использовать счетчик и увеличивать его каждый раз, когда вы печатаете слово. Вот краткий пример:

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