2013-10-27 52 views
0

這是我迄今爲止的一項任務的代碼。如何獲取奇數,偶數和回顯無效輸入的總值

<!DOCTYPE html> 
<html> 
<head><title>Numbers</title></head> 
<body> 
<form action="index.php" method="get"> 
<b>Numbers</b> 
<br> 
<textarea rows="12" cols="25" name="result" value="result"></textarea> 
<br> 
<input type="submit" value="Submit" name="submit"> 
</form> 
</body> 
</html> 

<?php 
    $result=$_GET["result"]; 
    if (empty($_GET['result'])) 
     { 
      echo '<p><font size="3" color="red">Field is Empty*</font></p>'; 
     } 
    elseif (isset($_GET['result'])) 
     { 
      $result=(explode("\n", $result)); 
     } 

    echo "<br />"; 
    echo "Total lines passed: " . count ($result); 
    echo "<br />"; 
    echo "Total value of numbers: " .array_sum($result); 

?> 

我需要一個代碼來回顯提交到文本框中的偶數和奇數輸入的總值。防爆。 1,2,3,4,5被提交,偶數的總值爲6,因爲2和4是偶數,而奇數的總值由於1,3和5是奇數而出現爲9。如果用戶也輸入了一個無效的整數,比如說a,b,c。我將能夠回顯列出所有提交的無效值。

1 
2 
3 
4 
5 
a 
b 
c 

Total of even numbers: 6 
Total of odd numbers: 9 
Invalid Numbers: a b c 

回答

0

試一下:

$even=array(); 
$odd=array(); 
$invalid=array(); 
for($i=0;$i<count($result);$i++) 
{ 
    if(!is_numeric($result[$i])) { $invalid[]=$result[$i]; continue; } 
    if($result[$i] % 2 == 0) $even[]=$result[$i]; 
    else $odd[]=$result[$i]; 
} 
echo "Sum of even numbers: " . array_sum($even); 
echo "Number of even numbers: " . count($even); 
echo "Sum of odd numbers: " . array_sum($odd); 
echo "Invalid numbers: " . implode(",",$invalid); 
+0

它不工作。如果我提交了1,2,3,4,5,那麼偶數和我輸入的最後一個值(在本例中爲5)中我給出了我修正的奇數 – user2896254

+0

,錯過了一些索引。 – Lorenz

0
$total = array("even" => 0, "odd" => 0, "invalid" => 0); 

foreach ($result as $r){ 
    if(intval($r) == "" && $r != 0){ 
     $total['invalid']++; 
    }else{ 
     if ($r % 2 == 0){ 
      $total['even'] += $r; 
     }else{ 
      $total['odd'] += $r; 
     } 
    } 
} 

print_r($total); 
+0

奇數和偶數輸出工作!對於無效,但它給出了0的值。我只需要知道如何回顯它們。除非我完全無能爲力。 – user2896254

+0

@ user2896254使用類似這樣的內容:http://3v4l.org/io1ur(我正在撰寫答案,但看起來與此相同)。 – Passerby

+0

謝謝!我只使用回聲代碼,因爲我實際上不知道如何輸出它們。 :) – user2896254

2
$result = array_map('trim', $result); // to trim the whitespace in your input 
$even = $odd = $invalid = array(); 

foreach ($result as $num) {   
    if (is_numeric($num)) { 
     if ($num % 2 == 0) { 
      $even[] = $num; 
     } else { 
      $odd[] = $num; 
     } 
    } else { 
     $invalid[] = $num; 
    } 
} 

echo "Total of even numbers: " . array_sum($even) . "<br />"; 
echo "Total of odd numbers: " . array_sum($odd) . "<br />"; 
echo "Invalid numbers: " . implode(' ', $invalid) . "<br />"; 

Demo!

0

試試這個:

$evenSum=0;$oddSum=0; 
    $alphaArr=array(); 
    foreach($result as $key){ 
    if(!is_nan($key)){ 
    if($key%2==0){ 
    $evenSum+=$key; 
    } 
    else{ 
    $oddSum+=$key; 
    } 
    }else{ 
    $alphaArr[]=$key;