2017-07-28 96 views
1

语句我有PHP中的下列术语的查询:减少了与多个查询“或” PHP

. 
. 
elseif ($row['date_starb'] == 0 AND $row['priv_handy'] AND (substr($row['priv_handy'], 0, 4) == '+420' OR substr($row['priv_handy'], 0, 4) == '+421' OR substr($row['priv_handy'], 0, 4) == '+357' OR substr($row['priv_handy'], 0, 4) == '+386')) 
. 
. 

这个查询工作,但问题是,是否有可能更容易编写。

任何帮助将不胜感激。

+0

这个问题不清楚,你能否请详细解释一下你想要什么? –

+0

这似乎是一个PHP唯一的问题。所以请删除mysql标签。 –

回答

4

您可以使用in_array()来匹配字符串列表:

$haysack = ['+420','+421','+357','+386']; 
$needle = substr($row['priv_handy'], 0, 4); 

if ($row['date_starb'] == 0 AND in_array($needle,$haysack)) { 
    // ... 
} 
+0

非常感谢:) –

0

来到这里期待这是数据库,而不是PHP - 我不是在PHP上,但对待这个伪代码并将其翻译为PHP?

我可能会写这样的:

AND instr('+420+421+357+386', $row['priv_handy'], 0, 4) 

本质定义在所有选项中的一个字符串,然后搜索它为您的变量内容