我有以下整数
7
77
0
20
在一个数组中。我用它们来检查来电的来源。
像730010123, 772930013, 20391938.
这样的数字
我需要做的是我需要一种方法来检查数字是以7还是77开头为例。
有没有办法在PHP
中执行此操作并避免千条if语句?
我遇到的一个问题是,如果我检查数字是否以7开头,那么以77开头的数字也会被调用。请注意,7个号码是移动的,77个是共享的费用号码,不相同,所以我需要将它们分开。
答案 0 :(得分:0)
if (substr($str, 0, 1) == '7') ||{
if (substr($str, 0, 2) == '77'){
//starts with '77'
} else {
//starts with '7'
}
}
答案 1 :(得分:0)
我用一个演示阵列做了一个小例子,我希望你能用它:
$array = array(
7 => 'Other',
70 => 'Fryslan!',
20 => 'New York',
21 => 'Dublin',
23 => 'Amsterdam',
);
$number = 70010123;
$place = null;
foreach($array as $possibleMatch => $value) {
if (preg_match('/^' . (string)$possibleMatch . '/', (string)$number))
$place = $value;
}
echo $place;
本案的答案是“弗里斯兰”。你必须记住7在这种情况下也匹配吗?因此,您可能希望在两次匹配的情况下添加一些度量系统。
答案 2 :(得分:0)
执行此操作的方法是将您收到的“整数”作为数字处理为字符串。
通过以下方式这样做:
$number = 772939913;
$filter = array (
'77' => 'type1',
'20' => 'type2',
'7' => 'type3',
'0' => 'type4');
$match = null;
foreach ($filter as $key => $val){
$comp = substr($number, 0, strlen($key));
if ($comp == $key){
$match = $key;
break;
}
}
if ($match !== null){
echo 'the type is: ' . $filter[$match];
//you can proceed with your task
}
答案 3 :(得分:0)
Is this you want?
<?php
$myarray = array(730010123, 772930013, 20391938);
foreach($myarray as $value){
if(substr($value, 0, 2) == "77"){
echo "Starting With 77: <br/>";
echo $value;
echo "<br>";
}
if((substr($value, 0, 1) == "7")&&(substr($value, 0, 2) != "77")){
echo "Starting With 7: <br/>";
echo $value;
echo "<br>";
}
}
?>
答案 4 :(得分:0)
您可以使用preg_match和array_filter作为
function check_digit($var) {
return preg_match("/^(7|77|0)\d+$/");
}
$array_to_be_check = array("730010123" , "772930013", "20391938");
print_r(array_filter($array_to_be_check, "check_digit"));