Php 检查数组值是否为数字
如何检查数字仅包含四位数字的数组中的值?如果有长度超过四位数的字符串或数字,我想回显一条错误消息 这是正确的:Php 检查数组值是否为数字,php,Php,如何检查数字仅包含四位数字的数组中的值?如果有长度超过四位数的字符串或数字,我想回显一条错误消息 这是正确的:$searchText='3423245324524256765' 这是错误的:$searchText='34d23244353,fsddf,2d4425674365' 我该怎么做 我试过这样的东西 $searchText = '3423,2453,3245,2425,6765'; function validate($input) { $searchArray
$searchText='3423245324524256765'代码>
这是错误的:$searchText='34d23244353,fsddf,2d4425674365'代码>
我该怎么做
我试过这样的东西
$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';
输出是:失败为什么?$searchText='3423245324524256765';
$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>';
}
}
$VAL=分解(“,”,$searchText);
foreach(VAL为$v){
$v=修剪($v);
如果(是数字($v)&&strlen($v)==4){
回音“很好,可以走了
”;
}elseif(是数字($v)){
回显“num,但不是4位数字
”;
}否则{
回显“字符串
”;
}
}
$searchText='3423245324524256765';
$VAL=分解(“,”,$searchText);
foreach(VAL为$v){
$v=修剪($v);
如果(是数字($v)&&strlen($v)==4){
回音“很好,可以走了
”;
}elseif(是数字($v)){
回显“num,但不是4位数字
”;
}否则{
回显“字符串
”;
}
}
将数组变量替换为$ary这是数组中返回的字符数
$maxlen = max(array_map('strlen', $ary));
为了更好地解释,请将数组变量替换为$ary这是数组中返回的字符数
$maxlen = max(array_map('strlen', $ary));
为了更好地解释,您可以使用下面的逻辑。(如果您的意思是“如何检查只有四位数字的数组中的值?”,那么下面就是解决方案)
您可以使用以下逻辑。(如果您的意思是“如何检查只有四位数字的数组中的值?”,则以下是解决方案)
这些不是数组(它们是字符串),但您可以通过将字符串拆分为一个数组并使用(filter\u var
在本例中):
if(!validate($searchText))
//失败
其他的
//通过
函数验证($input)
{
$inputArray=数组_映射('trim',explode(',',$input));
foreach($item形式的输入阵列){
if(filter_var($item,filter_VALIDATE_INT)==false | | strlen($item)!=4)
返回false;
}
返回true;
}
这些不是数组(它们是字符串),但您可以通过将字符串拆分为一个数组并使用(filter\u var
在本例中):
if(!validate($searchText))
//失败
其他的
//通过
函数验证($input)
{
$inputArray=数组_映射('trim',explode(',',$input));
foreach($item形式的输入阵列){
if(filter_var($item,filter_VALIDATE_INT)==false | | strlen($item)!=4)
返回false;
}
返回true;
}
有没有办法在爆炸前检查?不幸的是,因为它是一个字符串,除非你把字符串分解,否则就没有办法告诉你。有没有办法在爆炸前检查?不幸的是,因为它是一个字符串,除非您将字符串分解,否则无法判断。是的替换它将返回特定数组中的字符数替换它将返回特定数组中的字符数您尝试了什么吗?尝试了什么吗?您的代码没有考虑字符串中的空格,分隔符是第一个分解的参数,不是第二个。尝试$searchArray=array_map('trim',explode(',',$searchText))代码>代替检查我用您的解决方案更新了代码。。但它不起作用。@TharangaNuwanKumara对不起,是我的错。我已经用函数末尾的return true
编辑了我的答案。@TharangaNuwanKumara你是什么意思?它只在该函数内部处理$inputArray
。它实际上并不编辑$searchText
变量。您的代码不考虑字符串中的空格,分隔符是要分解的第一个参数,而不是第二个。尝试$searchArray=array_map('trim',explode(',',$searchText))代码>代替检查我用您的解决方案更新了代码。。但它不起作用。@TharangaNuwanKumara对不起,是我的错。我已经用函数末尾的return true
编辑了我的答案。@TharangaNuwanKumara你是什么意思?它只在该函数内部处理$inputArray
。它实际上并不编辑您的$searchText
变量。