1

我有一个存储多个邮政编码的字段。邮政编码列的查询结果可能包含多个邮政编码:90027,90028,90068

我需要一个 if 语句来检查结果中是否有单个邮政编码

$zipstring = $rows['pool_zip_codes']);

$zipsql = "SELECT `pool_zip_codes` FROM `cases` WHERE `id` = '{$rowid}' AND `pool_zip_codes` IN ('{$zipstring}') ";

$zipqry = mysql_query($zipsql);
$zipresult = mysql_fetch_row($zipqry);

if (($zipresult[0]) == '90068') { 
this zip code is in the list
} else {
not in list
}
};
4

4 回答 4

0

拆分字符串并使用in_array

if (in_array(explode(',', $zipresult[0]),$zipresult)) 
{ 
   #this zip code is in the list
} 
else { 
   #not in list
}
于 2013-10-10T12:53:56.617 回答
0

如果我正确阅读了您的问题,您想区分

#####

#####,#####,#####...

为此,只需使用正则表达式来检查字段是否匹配 5 位数字。

if (preg_match("/^\d{5}$/", $zipresult[0])) {
    ...
}

否则,正如其他人所说,使用in_array(). 他们没有说的是你必须首先explode()使用字符串来创建一个数组:

$exploded = explode(",", $zipresult[0]);

if (in_array($exploded, "99999")) {
    ....
}

根据您可以使用的评论进行编辑strpos()

$targetcode = "99999";
$found = array();
foreach ($zipresult as $row) {
    if (strpos($row['pool_zip_codes'], $targetcode) !== false) {
        $found[] = $row;
    }   
}

或者in_array()

$targetcode = "99999";
$found = array();
foreach ($zipresult as $row) {
    $exploded = explode(",", $row['pool_zip_codes']);
    if (in_array($exploded, $targetcode)) {
       $found[] = $row;
    }
}
于 2013-10-10T07:20:16.333 回答
0

尝试这个

$zipresult = mysql_fetch_array($zipqry);

if (($zipresult['pool_zip_codes']) == '90068') {
this zip code is in the list
} else {
not in list
}
于 2013-10-10T07:22:03.687 回答
0

利用in_array()

作为

if (in_array($zipresult[0],$zipresult)) 
{ 
echo "this zip code is in the list" ;
} 
else { 
echo "not in list"; 
} 
于 2013-10-10T07:22:22.853 回答