Задать вопрос
@ermilovroman

Как построить цикл foreach с условием if else?

У меня есть следующий запрос:
public function check($orderId){
		$url = $this->url.'load_adv_adv.php';
		$pageid = 0;
		$result = $this->http($url, array('page' => $pageid), true);
		preg_match('/({[^{}]*?'.$orderId.'.+?})/', $result, $matches);
		if(isset($matches[1])){
			$order = $matches[1];
			echo $order;
		}
	}

Как сделать так, что бы когда условие if(isset($matches[1])) не срабатывало $pageid увеличивалось на один $pageid++ и запрос повторялся заново?
  • Вопрос задан
  • 1059 просмотров
Подписаться 3 Оценить Комментировать
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега PHP
public function check($orderId)
{
    $url = $this->url.'load_adv_adv.php';
    $pageid = 0;

    $found = false;

    while (!$found)
    {
        $result = $this->http($url, array('page' => $pageid), true);

        preg_match('/({[^{}]*?'.$orderId.'.+?})/', $result, $matches);

        if (isset($matches[1]))
        {
            $found = true;
            $order = $matches[1];
        }
        else
        {
            $pageid++;
        }
    }
   
    return $order;
}


$pageid лучше, конечно, чем-то ограничить сверху, а то можно долго ждать, если несуществующий заказ скормить.

Кому-то такой вариант больше по душе (хотя, лично мне он не нравится):
public function check($orderId)
{
    $url = $this->url.'load_adv_adv.php';
    $pageid = 0;

    while (true)
    {
        $result = $this->http($url, array('page' => $pageid), true);

        preg_match('/({[^{}]*?'.$orderId.'.+?})/', $result, $matches);

        if (isset($matches[1]))
        {
            return $matches[1];
        }
         
        $pageid++;
    }
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
public function check($orderId){
    $url = $this->url.'load_adv_adv.php';
    $pageid = 0;
    start:
    $result = $this->http($url, array('page' => $pageid), true);
    preg_match('/({[^{}]*?'.$orderId.'.+?})/', $result, $matches);
    if(isset($matches[1])){
      $order = $matches[1];
      echo $order;
    } else {
      $pageid++;
      goto start;
   }
}
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы