2016-08-24 155 views
2

我尝试这样做: -过滤字符串

function sum_array($arr_sum){ 
     $string= ""; 

     $length= count($arr_sum); 
     $sum= NULL; 
     if(is_string($arr_sum)){ 
       echo "You cannot use string"; 
      }else{  
       for($i=0; $i<$length; $i++){ 
       $sum = $sum + $arr_sum[$i]; 
      } 
       echo " The Sum is ". $sum; 
       } 
    } 
    $array_summation=["string",12.6,25.2,10,12]; 
    sum_array($array_summation); 

我想知道我应该怎么做,如果我想只有整数或浮点数数组内的值,如果串进来阵列提示错误没有串想或类似的东西

+0

你应该接受一个答案 – Mike

回答

0

试试这个

function sum_array($arr_sum){ 
     $sum = 0; 
     foreach($arr_sum as $value){ 
      if(!is_numeric($value)){ 
       echo 'Array Contain non numeric data'; 
       exit; 
      } 
      $sum += $value; 
     } 
     echo 'The sum is '.$sum; 
    } 

    $array_summation=["string",12.6,25.2,10,12]; 
    sum_array($array_summation); 
+0

谢谢为我工作 –

+0

如果它适合您,请将此答案标记为已接受。 –

1

使用array_map让每个值的数组中存在的类型 -

$type = array_map('gettype', $array_summation); 
if (!empty($type) && in_array('string', $type) { 
    echo "You can't use string."; 
} 
+0

感谢阵列和igno在为我工作 –

+0

这仅检查第一个元素的类型休息。此外,你还缺少''gettype''的引号。 – Mike

+0

更新了答案,现在应该适用于所有人:-) – jitendrapurohit

0

PHP有一个内置的array_sum函数,它忽略了非数字字符串。

$arr = [1,2,'3','apple']; 
var_dump(array_sum($arr)); // int(6) 

或者,如果你真的需要它们来产生一个错误,你可以使用array_map

function sum_array($arr) { 
    if (array_sum(array_map('is_numeric', $arr)) !== count($arr)) { 
     echo "You cannot use string"; 
     return; 
    } 
    echo array_sum($arr); 
} 
sum_array([1,2,'3','apple']); // You cannot use string 
sum_array([1,2,'3','5.2']); // 11.2 

或者,如果你想确保阵列中的所有值不是浮动或整数,而不是数字字符串,你可以这样做:

function is_non_string_number($n) { 
    return is_float($n) || is_int($n); 
} 
function sum_array($arr) { 
    if (array_sum(array_map('is_non_string_number', $arr)) !== count($arr)) { 
     echo "You cannot use string"; 
     return; 
    } 
    echo array_sum($arr); 
} 
sum_array([1,2,'3','apple']); // You cannot use string 
sum_array([1,2,'3','5.2']); // You cannot use string 
sum_array([1,2,3]); // 6 
+0

谢谢为我工作 –

+0

注意:这将允许[数字字符串](http://php.net/manual/en/function.is-numeric.php),例如'“3.5”'。如果你想禁止这个,只允许整数或浮点数,让我知道,我会更新答案。 – Mike

+0

是的请注明这个案例 –