Как объединить два оператора IF в PHP

хорошо, я знаю, что это вопрос newb, но как я буду выполнять только если 2, если 1 (текст: тест появляется в строке данных.) Я попытался объединить эти два, но в конечном итоге со всеми видами проблем. Поэтому, если тест не показывает пропущенные циклы, если это так, то код регулярного выражения, который у меня есть, если 2 будет запущен.

$data = 'hello world "this is a test" last test';


// IF 1 
if (stripos($data, 'test') !== false) {
}


// IF 2
if (preg_match('/"[^"]*"/i', $data, $regs)) {
$quote = str_word_count($regs[0], 1);
$data = str_replace($regs[0], '"'.implode(' ', $quote).'"', $data);
}

echo $data;

4 ответов


либо:

if (stripos($data, 'test') !== false) {
    if (preg_match('/"[^"]*"/i', $data, $regs)) {
        $quote = str_word_count($regs[0], 1);
        $data = str_replace($regs[0], '"'.implode(' ', $quote).'"', $data);
    }
}

или:

if (stripos($data, 'test') !== false && preg_match('/"[^"]*"/i', $data, $regs)) {
    $quote = str_word_count($regs[0], 1);
    $data = str_replace($regs[0], '"'.implode(' ', $quote).'"', $data);
}

оба делают то же самое. The && оператор означает "и". The || оператор означает "или".


вы имеете в виду, что хотите вложить одно в другое?

if (stripos($data, 'test') !== false)
{

  if (preg_match('/"[^"]*"/i', $data, $regs))
  {
     $quote = str_word_count($regs[0], 1);
     $data = str_replace($regs[0], '"'.implode(' ', $quote).'"', $data);
  }

}

вы также можете изменить это, чтобы использовать && (что означает "и"):

if (stripos($data, 'test') !== false && preg_match('/"[^"]*"/i', $data, $regs)) {
            $quote = str_word_count($regs[0], 1);
            $data = str_replace($regs[0], '"'.implode(' ', $quote).'"', $data);
}

кроме того, ваш код использует !==. Вы это имели в виду или имели в виду?--4-->? Я считаю, что они имеют разные значения - я знаю, что != означает "не равно", но я не уверен о !==.


просто вложите свои операторы IF

if (stripos($data, 'test') !== false) {
    if (preg_match('/"[^"]*"/i', $data, $regs)) {
        $quote = str_word_count($regs[0], 1);
        $data = str_replace($regs[0], '"'.implode(' ', $quote).'"', $data);
    }

}

или я неправильно понял ваш вопрос?

говоря:" я пытался объединить два, но в конечном итоге со всеми видами проблем " довольно расплывчато. Сочетая как? Вложенных такой? Какие проблемы?


if (stripos($data, 'test') !== false) {
  if (preg_match('/"[^"]*"/i', $data, $regs)) {
  $quote = str_word_count($regs[0], 1);
  $data = str_replace($regs[0], '"'.implode(' ', $quote).'"', $data);
  }
}