2013-07-12 71 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"));