有没有办法合并
if ((strpos($str,"abc") !== false) and (strpos($str,"abc") < 1000))
或者我需要两个ifs吗? 因为如果字符串中没有abc,则位置为-1,因此小于1000。
我只对php有一些特殊问题感兴趣;)
这是:
if (strpos(substr($str,0,1000),"abc") !== false)
这是一个好方法吗?
答案 0 :(得分:2)
$pos_abc = strpos($str, 'abc');
if ($pos_abc !== false && $pos_abc < 1000)
你想测试两件不同的东西:1-是字符串中的abc
?并且2-是该字符串的前1000个字符中的abc
。
虽然可以在一次测试中重写它,但它没有任何好处,而且实际上代码的清晰度会很高。
答案 1 :(得分:0)
如果您愿意,可以尝试:
if( in_array(strpos($str,"abc"),range(0,1000),true))
然而,它看起来并不简单,而且性能成本非常高。
也许最好的方法是使用变量:
$pos = strpos($str,"abc");
if( $pos !== false && $pos < 1000) ...
答案 2 :(得分:0)
两个问题:
更新:
漂亮而快速的解决方案模式:
if(($pos = strpos($str,"abc") !== false)?($pos < 1000):false)
漂亮而干净的解决方案模式:
$pos = strpos($str,"abc");
if(($pos !== false)?($pos < 1000):false)