2013-07-12 73 views
0

我有以下的整数

PHP比较整数

7 
77 
0 
20 
阵列中的

。我用它们来检查呼叫的来源。
730010123, 772930013, 20391938. 这样的数字我需要做的是我需要一种方法来检查数字是以7还是以77开头的例子。

有没有办法在PHP中做到这一点,并避免一千个if语句?
我遇到的一个问题是,如果我检查数字是否以7开头,那么以77开头的数字也会被调用。请注意,7个号码是移动的,77个是共享费用号码,并且不以任何方式相等,因此我需要将它们分开。

+0

preg_matcharray_filter所以基本上开始于7所有的数字都是手机号码,除非他们开始77,这使他们分担成本?容易区分,只需将70,71,... 79号码添加到您的阵列中,并将它们检测为移动设备。 – Sven

回答

0
if (substr($str, 0, 1) == '7') ||{ 
    if (substr($str, 0, 2) == '77'){ 
     //starts with '77' 
    } else { 
     //starts with '7' 
    } 
} 
+0

恐怕把它当作一个字符串是最快捷的,也是最简单的方法。事实上,我想不出另一种方式,尽管我会觉得这样做有点肮脏。 – Anpan

+0

@Anpan - 它不会让我感到肮脏。将它们作为字符串处理实际上是更清洁的,因为在分割之后摆脱剩余部分时,没有像以前那样清理干净的问题。 –

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; 

在这种情况下,答案是“Fryslan”。你必须记住,在这种情况下,还有7个匹配?所以你可能想要在两个匹配的情况下添加一些公制系统。

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 
} 
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>"; 
    } 
} 



?> 
0

您可以使用该

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"));