Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP比较整数_Php_If Statement_Integer_Compare - Fatal编程技术网

PHP比较整数

PHP比较整数,php,if-statement,integer,compare,Php,If Statement,Integer,Compare,我有以下整数 7 77 0 20 在一个数组中。我用它们来检查电话的来源。 像730010123、772930013、20391938这样的数字。 我需要做的是,我需要一种方法来检查数字是否以7或77开头,例如。 在PHP中有没有什么方法可以做到这一点,并避免使用上千条if语句? 我遇到的一个问题是,如果我检查数字是否以7开头,那么以77开头的数字也会被调用。请注意,7个数字是移动的,77个数字是共享成本数字,在任何方面都不相等,因此我需要将它们分开。我用一个演示阵列做了一个小示例,希望

我有以下整数

7
77
0
20
在一个数组中。我用它们来检查电话的来源。
730010123、772930013、20391938这样的数字。
我需要做的是,我需要一种方法来检查数字是否以7或77开头,例如。

PHP
中有没有什么方法可以做到这一点,并避免使用上千条if语句?

我遇到的一个问题是,如果我检查数字是否以7开头,那么以77开头的数字也会被调用。请注意,7个数字是移动的,77个数字是共享成本数字,在任何方面都不相等,因此我需要将它们分开。

我用一个演示阵列做了一个小示例,希望您可以使用它:

if (substr($str, 0, 1) == '7') ||{
    if (substr($str, 0, 2) == '77'){
        //starts with '77'
    } else {
        //starts with '7'
    }
}
$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也匹配?因此,在两个匹配的情况下,您可能需要添加一些度量单位。

一种方法是将收到的作为数字的“整数”作为字符串处理

这样做:

$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
}
这是你想要的吗?
您可以使用和


恐怕把它当作一根绳子来处理是最快也是最容易的方法。事实上,我想不出别的办法,即使这样做会让我觉得有点脏。@Anpan-这根本不会让我觉得脏。将它们作为字符串处理实际上更干净,因为在除法后去掉余数时,不会像除法后的余数那样出现混乱。因此,基本上所有以7开头的数字都是手机号码,但以77开头的数字除外,这会让它们分担成本吗?易于区分,只需添加70、71。。。将79个数字添加到阵列中,并将其检测为移动。
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>";
    }   
}



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