如何保留if语句的结果

时间:2013-12-11 04:18:35

标签: php if-statement

我经常发现自己在做这样的事情:

$search = 'some string';
if(strpos($html, $search)!==false){
  $trimmed = substr($html, strpos($html, $search));
  // whole bunch of other stuff
}

有没有办法在不调用strpos()两次的情况下执行此操作?目前我首先调用if()检查,然后再执行。这显然效率低下。

即使我尝试使用三元运算符,当我将其指定为真值时,我仍然会调用strpos()两次。

$trimmed = strpos($html, $search)!==false ? substr($html, strpos($html, $search)) : false;

if($trimmed!==false){
  // the other stuff  
}

保持if语句结果的最佳方法是什么,以便不需要再次调用它?

2 个答案:

答案 0 :(得分:4)

$pos = strpos($html, $search);

if ($pos !== false) {
  $trimmed = substr($html, $pos);
}

if (($pos = strpos($html, $search)) !== false) {
  $trimmed = substr($html, $pos);
}

答案 1 :(得分:2)

在您的三元组中,您调用strpos()的值,如果它不是假的话,请再次拨打strpos()并将其存储在trimmed,否则如果是false,将其设置为false

您无意中两次致电strpos()

strpos($html, $search) == (strpos($html, $search)!==false ? substr($html, strpos($html, $search)) : false;)

只需将函数调用的值存储在变量中,然后检查:

$trimmed = strpos($html, $search)

if($trimmed!==false){
  // the other stuff  
}