2016-08-24 194 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

是的請註明這個案例 –