使用substr搜索数组的前三个字符

时间:2014-06-10 19:15:16

标签: php

我正在为费率进行简单的邮政编码查询。下面的代码起作用,基本上如果来自$ zipcode的前3个字符是“962”(或任何确定的)它回显文本。有没有办法清理它?

如何通过数组查看$ zipcode以查看是否有任何条件?

if (substr($zipcode, 0, 3) === '962' || substr($zipcode, 0, 3) === '963' || substr($zipcode, 0, 3) === '964' || substr($zipcode, 0, 3) === '964' || substr($zipcode, 0, 3) === '965' || substr($zipcode, 0, 3) === '966') {
echo "We do not ship FPO";
}

3 个答案:

答案 0 :(得分:4)

您可以简单地将不受支持的zip前缀列表放入和数组中,并检查针对此数组提供的前缀。

$zip_prefix_no_ship = array('962', '963', '964', '965', '966');
$zip_prefix = substr($zip_code, 0, 3);
if(in_array($zip_prefix, $zip_prefix_no_ship)) {
    echo "We do not ship FPO"
} 

答案 1 :(得分:2)

试试这个:

if (in_array(substr($zipcode, 0, 3), range(962, 966))) {
    echo 'We do not ship FPO';
}

或者,清理了一下:

$needle = substr($zipcode, 0, 3);
$haystack = range(962, 966);
if (in_array($needle, $haystack)) {
    echo 'We do not ship FPO';
}

in_array()检查数组中是否存在值。

range()在提供的两个值之间创建一个值数组。

如果要检查的数字数组并不总是一组连续的数字,那么您可以将range(962, 966)更改为array(962, 963, ... )

答案 2 :(得分:1)

一种方式:

if(preg_match('/^96[2-6]/', $zipcode)) {
    echo "We do not ship FPO";
}