@ivan_jurin

Как в данной ситуации вывести результат?

Как вывести результат в цикли именно нужное количество а не все?
function zp($x = null, $url = null, $params = null){

	$y = null;

	$content = post(url);

	preg_match_all('/<div class="post(.*?)\>/s', $content, $strs);
	
	foreach($strs[1] as $str){
		
		preg_match('/data="(.*?)\_/', $str, $data);

		switch($params){

			case 0:{

				switch($data[1]){

					case 'new':if($y++ < $x){
							
						$result = $data[1].'<br />';
						break;

					}

					case 'old':if($y++ < $x){
							
						$result = $data[1].'<br />';		
						break;

					}				
				}

			break;

			}

			case 1:{

				case 'all':if($y++ < $x){
							
					$result = $data[1].'<br />';
					break;

				}

				break;

			}
		}
		echo $result;
	}
}

при вызове функции я указываю сколько нужно вывести результатов (параметр Х), но выводится все найденые. Проблема в том что выполнения для кажного найденого однатипные и повторяться не охото, как сделать чтобы красиво было?
  • Вопрос задан
  • 92 просмотра
Пригласить эксперта
Ответы на вопрос 1
zorca
@zorca
Ограничить массив еще перед вызовом foreach при помощи функции:
$new_strs = array_slice($strs[1], 0, $x);
ПыСы. Хотя я кажется не уловил сразу логику вашего алгоритма. Как минимум его можно оптимизировать. Сейчас какой-то спагетти-код вышел. Case для проверки на 0 как-то слишком круто. )))
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы