如何在PHP中组合两个条件语句

如何在PHP中组合两个条件语句,php,if-statement,Php,If Statement,好的,我知道这是一个新问题,但我如何只执行IF 2 IF 1(文本:test出现在数据字符串中)。我尝试将两者结合起来,但最终出现了各种各样的问题。所以,如果测试没有显示跳过的循环,那么将运行if 2中的正则表达式代码 $data = 'hello world "this is a test" last test'; // IF 1 if (stripos($data, 'test') !== false) { } // IF 2 if (preg_match('/"[^"]*"/i'

好的,我知道这是一个新问题,但我如何只执行IF 2 IF 1(文本:test出现在数据字符串中)。我尝试将两者结合起来,但最终出现了各种各样的问题。所以,如果测试没有显示跳过的循环,那么将运行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;

你是说你想把一个嵌套在另一个里面

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语句即可

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

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

您是否尝试过逻辑运算符,特别是
&
?这是行不通的,因为正则表达式总是真的,如果找到文本测试,我只需要执行正则表达式匹配。实际上,它仍然有效。计算机是智能的,只有在第一次检查失败时才尝试正则表达式。这叫做短路评估。在“if(a&&b)”中,如果a失败,b将不会运行。@Tesserex Ahhh,那么我应该继续坚持下去,谢谢你的澄清,下次我会更清楚的。:)
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);
}
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);
  }
}