从数组内部过滤字符串


Filter string from inside an array

我试过了:-

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

我想知道我应该怎么做如果我只想在数组中输入整数或浮点值,如果字符串进入数组它就会给出错误,没有想要的字符串或类似的东西

使用array_map获取数组中每个值的类型-

$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有一个内置的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