Php 从数组中筛选字符串

Php 从数组中筛选字符串,php,Php,我试过这个:- 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&

我试过这个:-

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);
函数和数组($arr\u sum){
$string=“”;
$length=计数($arr_sum);
$sum=NULL;
如果(是字符串($arr_sum)){
回显“您不能使用字符串”;
}否则{
对于($i=0;$i用于获取数组中每个值的类型-

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

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);
PHP有一个内置函数,它忽略非数字字符串

$arr = [1,2,'3','apple'];
var_dump(array_sum($arr)); // int(6)
或者,如果您确实需要它们来产生错误,您可以使用:

或者,如果要确保数组中的所有值都是浮点或整数,而不是数字字符串,则可以执行以下操作:

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

感谢为meThanks工作为meThis工作只检查数组中第一个元素的类型,而忽略其余元素。此外,您还缺少
'gettype'
@jitendrapurohit的引号。如果有人将对象或其他数组作为值,该怎么办?这就是为什么我使用
return is_float($n)| is_int($n);
在我的答案中。OP给出了一个数组的示例,用于验证它。感谢为meNote工作。这将允许,例如
“3.5”
。如果您不允许,只允许整数或浮点数,请告诉我,我将更新答案。是的,请指定这种情况also@MughalGee已更新。您应该接受答案
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