如何在PHP中组合两个IF语句

时间:2011-05-10 19:53:14

标签: php if-statement

好的,我知道这是一个新问题,但是如果IF 1(text:test出现在数据字符串中),我将如何才能执行IF 2.我尝试将两者结合起来但最终会遇到各种各样的问题。因此,如果测试没有显示跳过的循环,如果它,那么我将在IF 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 个答案:

答案 0 :(得分:13)

或者:

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

两者都做同样的事情。 &&运算符表示“和”。 ||运算符表示“或”。

答案 1 :(得分: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);
  }

}

您也可以将其更改为使用&&(表示“And”):

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

此外,您的代码使用!==。这是你的意思,还是你的意思!=?我相信他们有不同的含义 - 我知道!=的意思是“不平等”,但我不确定!==

答案 2 :(得分: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);
    }

}

或者我误解了你的问题?

说“我尝试过将两者结合起来但最终遇到各种各样的问题”是非常模糊的。结合如何?像这样嵌套?什么问题?

答案 3 :(得分:2)

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