如何将PHP三元表达式转换为if-else?

如何将PHP三元表达式转换为if-else?,php,if-statement,conditional-operator,code-conversion,Php,If Statement,Conditional Operator,Code Conversion,下面是使用条件运算符编写的代码片段: $iPage=($this->request()->get('search') ? $this->request()->getInt('req4') : ($this->request()->getInt('req3') ? $this->request()->getInt('req3') : 1 )); 我将其转换为if-else格式,如下所示: if($this->request()->get

下面是使用条件运算符编写的代码片段:

$iPage=($this->request()->get('search') ? $this->request()->getInt('req4') : ($this->request()->getInt('req3') ? $this->request()->getInt('req3') : 1 ));
我将其转换为if-else格式,如下所示:

if($this->request()->get('search')) {
  $this->request()->getInt('req4')
} else {
  ($this->request()->getInt('req3')
}

请有人帮我告诉我,我是否已经做了适当的代码转换?如果我在转换过程中犯了任何错误,请更正错误并让我知道错误。

否,转换应为:

if ($this->request()->get('search'))
    $iPage = $this->request()->getInt('req4');
elseif ($this->request()->getInt('req3'))
    $iPage = $this->request()->getInt('req3');
else
    $iPage = 1;

否,转换应为:

if ($this->request()->get('search'))
    $iPage = $this->request()->getInt('req4');
elseif ($this->request()->getInt('req3'))
    $iPage = $this->request()->getInt('req3');
else
    $iPage = 1;

正确的转换是:

if ($this->request()->get('search') {
    $iPage = $this->request()->getInt('req4');
} else {
    if $this->request()->getInt('req3') {
        $iPage = $this->request()->getInt('req3');
    } else {
        $iPage = 1;
    }
}

但是,您可以合并第一个else和第二个if,使其成为elseif。正确的转换是:

if ($this->request()->get('search') {
    $iPage = $this->request()->getInt('req4');
} else {
    if $this->request()->getInt('req3') {
        $iPage = $this->request()->getInt('req3');
    } else {
        $iPage = 1;
    }
}

但是,您可以合并第一个else和第二个if,使其成为elseif

这是使用条件运算符的原始代码,其格式更易于阅读,根本不需要外括号:

$iPage = (
    $this->request()->get('search') ?
    $this->request()->getInt('req4') :
    (
        $this->request()->getInt('req3') ?
        $this->request()->getInt('req3') :
        1
    )
);
在第一步中,让我们将$this->request提取到一个变量中;它使代码更易于阅读,运行速度更快,避免了四次执行相同的函数调用;它每次返回相同的值:

$request = $this->request();
$iPage = (
    $request->get('search') ?
    $request->getInt('req4') :
    (
        $request->getInt('req3') ?
        $request->getInt('req3') :
        1
    )
);
现在,让我们用if/then/else替换条件:

现在,我们注意到值1是$iPage的默认值。如果满足有关请求的某些条件,则使用$request的值计算$iPage的值;否则,$iPage变为1。让我们提取这些信息并简化代码:

// Default value 
$iPage = 1;
// Get the request into a variable for faster and shorter code
$request = $this->request();
// If 'search' is set, use 'req4' else use 'req3'
if ($request->get('search')) {
    $iPage = $request->getInt('req4');
} else {
    if ($request->getInt('req3')) {
        $iPage = $request->getInt('req3');
    }
}
现在,我们可以将else与if组合为:

// Default value 
$iPage = 1;
// Get the request into a variable for faster and shorter code
$request = $this->request();
// If 'search' is set, use 'req4' else use 'req3'
if ($request->get('search')) {
    $iPage = $request->getInt('req4');
} elseif ($request->getInt('req3')) {
    $iPage = $request->getInt('req3');
}
如果我们将默认值放回if/else构造中,您可能会觉得更容易理解,如下所示:

// Get the request into a variable for faster and shorter code
$request = $this->request();
if ($request->get('search')) {
    // If 'search' is provided, use 'req4'
    $iPage = $request->getInt('req4');
} elseif ($request->getInt('req3')) {
    // else, use 'req3' if provided
    $iPage = $request->getInt('req3');
} else {
    // else default to 1
    $iPage = 1;
}
或者,如果您不介意使用条件运算符并获得更紧凑的代码,您可以使用PHP5.3引入的功能将第二个if打包回?:表单:

使用上述任何代码转换;所有这些都提供了相同的结果。
我个人更喜欢最后一个;它结构紧凑,易于阅读。

这是使用条件运算符的原始代码,格式更易于阅读。完全不需要外括号:

$iPage = (
    $this->request()->get('search') ?
    $this->request()->getInt('req4') :
    (
        $this->request()->getInt('req3') ?
        $this->request()->getInt('req3') :
        1
    )
);
在第一步中,让我们将$this->request提取到一个变量中;它使代码更易于阅读,运行速度更快,避免了四次执行相同的函数调用;它每次返回相同的值:

$request = $this->request();
$iPage = (
    $request->get('search') ?
    $request->getInt('req4') :
    (
        $request->getInt('req3') ?
        $request->getInt('req3') :
        1
    )
);
现在,让我们用if/then/else替换条件:

现在,我们注意到值1是$iPage的默认值。如果满足有关请求的某些条件,则使用$request的值计算$iPage的值;否则,$iPage变为1。让我们提取这些信息并简化代码:

// Default value 
$iPage = 1;
// Get the request into a variable for faster and shorter code
$request = $this->request();
// If 'search' is set, use 'req4' else use 'req3'
if ($request->get('search')) {
    $iPage = $request->getInt('req4');
} else {
    if ($request->getInt('req3')) {
        $iPage = $request->getInt('req3');
    }
}
现在,我们可以将else与if组合为:

// Default value 
$iPage = 1;
// Get the request into a variable for faster and shorter code
$request = $this->request();
// If 'search' is set, use 'req4' else use 'req3'
if ($request->get('search')) {
    $iPage = $request->getInt('req4');
} elseif ($request->getInt('req3')) {
    $iPage = $request->getInt('req3');
}
如果我们将默认值放回if/else构造中,您可能会觉得更容易理解,如下所示:

// Get the request into a variable for faster and shorter code
$request = $this->request();
if ($request->get('search')) {
    // If 'search' is provided, use 'req4'
    $iPage = $request->getInt('req4');
} elseif ($request->getInt('req3')) {
    // else, use 'req3' if provided
    $iPage = $request->getInt('req3');
} else {
    // else default to 1
    $iPage = 1;
}
或者,如果您不介意使用条件运算符并获得更紧凑的代码,您可以使用PHP5.3引入的功能将第二个if打包回?:表单:

使用上述任何代码转换;所有这些都提供了相同的结果。
我个人更喜欢最后一个;它简洁易读。

为什么不自己测试一下,看看它是否错了?@Epodax:坦白地说,我只是对给出的声明中的太多条件感到困惑,所以请求帮助。value 1无法返回。。应该是处于最后状态的人。。还有,为什么不自己测试一下,看看是不是错了?@Epodax:坦率地说,我只是对陈述中的太多条件感到困惑,所以请求帮助。价值1将无法返回。。应该是处于最后状态的人。。为if语句使用括号-if语句缺少括号-