检查数组值是数字

时间:2012-11-03 05:37:00

标签: php

如何检查数组中只包含四位数字的值?如果有超过四位数的字符串或数字,我想回显错误信息。

这是正确的:$searchText = '3423, 2453, 3245 , 2425, 6765';

这是错误的:$searchText = '34d23, 244353, fsddf , 2d4425, 674365';

我该怎么做?

我尝试过这样的事情......

$searchText = '3423,2453,3245,2425,6765';       


function validate($input) {
    $searchArray = array_map('trim', explode(',', $input));
    foreach($searchArray as $item) {
        if(filter_var($item, FILTER_VALIDATE_INT) === false || strlen($item) != 4)
            return false;
    }
}

if(!validate($searchText))
    echo 'fail';
else
    echo 'pass';

输出是:失败原因是什么?

4 个答案:

答案 0 :(得分:3)

$searchText = '3423, 2453, 3245 , 2425, 6765';

$vals = explode(",",$searchText);

foreach($vals as $v){
    $v = trim($v);
    if(is_numeric($v) && strlen($v)==4){
        echo 'good to go<br>';
    }elseif(is_numeric($v)){
        echo 'num but not 4 digits<br>';
    }else{
        echo 'string<br>';
    }
}

答案 1 :(得分:2)

这些不是数组(它们是字符串),但您可以通过将字符串拆分为数组并使用PHP's filtering(在这种情况下为filter_var)来解决问题:

if(!validate($searchText))
    // fail
else
    // pass

function validate($input)
{
    $inputArray = array_map('trim', explode(',', $input));
    foreach($inputArray as $item) {
        if(filter_var($item, FILTER_VALIDATE_INT) === false || strlen($item) != 4)
            return false;
    }
    return true;
}

答案 2 :(得分:1)

您可以使用以下逻辑。(如果您的意思是“如何检查数组中包含仅包含四位数字的值?”,则下面是解决方案)

<?php
//you can use explode() function to convert your string into array.
//$searchText = '3423, 2453, 3245 , 2425, 6765';    
//$searchText = explode(",",$searchText);

$searchText = array('3423', '2453', '3245' , '2425', '6765');
$count = sizeof($searchText);
foreach($searchText as $key=>$value) {


    if (is_numeric($value) && preg_match('/^\d{4}$/', $value)) {

      // pass
    } else {

        $count--;
       // fail
    }

}

if($count == sizeof($searchText)) {
    echo "All good";
}
?>

答案 3 :(得分:0)

用$ ary替换你的数组变量,这是返回数字在数组

$maxlen = max(array_map('strlen', $ary));

以获得更好的解释StackOverflow