-4

给定一个表达式的输入,该表达式由一串字母和运算符(加号、减号和字母。IE:'b-d+e-f')和一个包含一组以逗号分隔的变量/值对的文件(即:a=1,b=7,c=3,d=14)编写一个程序,输出输入表达式的结果。

例如,如果表达式输入为 ("a + b+c -d") 并且文件输入为 (a=1,b=7,c=3,d=14),则输出将为 -3。

到目前为止,我得到了这个,它计算了数字,但不知道如何用字母 abcd 来计算它,

  <html>
 <head>

 </head> 
 <body>

 <form action = ""  method = "GET"> 
Number 1: <input type = "text" name = "input[]" size=3> 
<br/> 

Number 2: <input type = "text" name = "input[]" size=3> <br> 

Number 3: <input type = "text" name = "input[]" size=3> <br> 

Number 4: <input type = "text" name = "input[]" size=3> <br> 

 <input type="hidden" name="calc" value ="yes"> 
 <input type = "submit" name = "Calculate"/> 
 </form> 
 </body> 
 </html> 

<?php 

  print_r($_GET);
  $myInputs = $_GET['input'];
  print_r($myInputs);

  $myArray = array();
  $myArray['a'] = 5;
  $myArray['b'] = 10 ; 
  $myArray['c'] = 15 ;
  $myArray['d'] = 20 ;


  echo $myArray[$_GET['a']] + $myArray[$_GET['b']] ; 

 /*
 if ($_GET['calc'] == "yes") 
 { 
 $a = $_GET['a']; 
 $b = $_GET['b']; 
 $c = $_GET['c']; 
 $d = $_GET['d']; 
 $total = $a+$b+$c+$d; 
 print "Total is: $total <p>";
 } 
 */
 ?>

<?php
$expression = '';   
$input      = array( 'a' => 5,    
                     'b' => 10,
                     'c' => 15,
                     'd' => 20); 
$total = 0;
$sum   = '';
// Override default expression and input values
if(isset($_POST['Calculate']))
{
    $input      = $_POST['input'];          //input being passed via POST method
    $expression = $_POST['expression'];     //expression being passed via POST method 
}
// make sure the users expression is safe to use
if(preg_match('#^[a-z+-\s]+$#i', $expression))
{
    $sum = $expression;         //evaluates sum as expression
    $input_letters = array();   //puts letters into a array
    $input_operators = array(); //puts operators into a array


    for ($i = 0; $i < strlen($expression) ; $i++) { //gets string length
    if (($i % 2) == 0) {
    $input_letters[] = $expression[$i]; //getting the character for the position i 
    } else {
    $input_operators[] = $expression[$i];
    }
    }
    // 
    for ($i = 0 ; $i < sizeof($input_letters); $i++) { //size of= numbers (4)
    $value = $input[$input_letters[$i]]; //takes the value  from the letters 
    if ($i == 0) { 
        $sum += $value; //adds the sum if = 0
    } else {
    if ($input_operators[$i-1] == '+') { //checks to see if the operator is +
    $sum += $value;
    } else if ($input_operators[$i-1] == '-')  { //checks to see if the operator is -
    $sum -= $value;
    }
    }
    print_r($value);
    }
} else {    
echo "Error: expression not correct form"; //error message
}
?>
<form action=""  method="post">     <!--Form begins--> 
    Number A: <input type="text" name="input[a]" value="<?php echo $input['a']; ?>" size=3> <br/>
    Number B: <input type="text" name="input[b]" value="<?php echo $input['b']; ?>" size=3> <br> 
    Number C: <input type="text" name="input[c]" value="<?php echo $input['c']; ?>" size=3> <br> 
    Number D: <input type="text" name="input[d]" value="<?php echo $input['d']; ?>" size=3> <br>
    <br>
    Expression: <input type = "text" name = "expression" value="<?php echo $expression ?>">  = 
<?php echo $sum; ?><br>
    Sum: <?php echo $sum; ?><br>
    <input type="submit" name="Calculate" /> 
</form>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script>

$( "form" ).submit(function( event ) {
var val_is_good=($('input[name="expression"]').val().length==4)?true:false;
if(!val_is_good){alert('Enter four letters or die!');}

});
</script>

现在我添加了一个脚本来告诉用户如果他们输入超过 4 个字母,则警告消息说请只输入四个字母,有人知道为什么我的脚本即使只输入四个字母也会输出警告消息?

4

2 回答 2

0
<html>
 <head>
 </head> 
 <body>

 <form action = ""  method = "GET"> 
Number 1: <input type = "text" name = "input[]" size=3> 
<br/> 

Number 2: <input type = "text" name = "input[]" size=3> <br> 

Number 3: <input type = "text" name = "input[]" size=3> <br> 

Number 4: <input type = "text" name = "input[]" size=3> <br> 

 <input type="hidden" name="calc" value ="yes"> 
 <input type = "submit" name = "Calculate"/> 
 </form> 
 </body> 
 </html> 

<?php 

print_r($_GET);
$myInputs = $_GET['input'];

//you are assigning $_GET values to an array myInputs so no need here

print_r($myInputs);
echo $myInputs[0]+ $myInputs[1]; 

$myArray = array();
$myArray['a'] = 5;
$myArray['b'] = 10 ; 
$myArray['c'] = 15 ;
$myArray['d'] = 20 ;

// In case of myarray it has keys a,b,c,d only... so need of using $_GET here also.
echo $myArray['a']+$myArray['b'];

// but if you want to it directly from$_GET values.

echo $_GET['input'][0]+ $_GET['input'][1]; 


?>
于 2013-10-28T12:53:04.430 回答
0

我在这个站点找到了解决方案。这是该帖子的代码:

    <?php
$expression = '';   
$input      = array( 'a' => 5,    
                     'b' => 10,
                     'c' => 15,
                     'd' => 20); 
$total = 0;
$sum   = '';
// Override default expression and input values
if(isset($_POST['Calculate']))
{
    $input      = $_POST['input'];
    $expression = $_POST['expression'];
}
// make sure the users expression is safe to use
if(preg_match('#^[a-z+-\s]+$#i', $expression))
{
    $sum = $expression;
    $input_letters = array();
    $input_operators = array();

    for ($i = 0; $i < strlen($expression) ; $i++) {
    if (($i % 2) == 0) {
    $input_letters[] = $expression[$i]; 
    } else {
    $input_operators[] = $expression[$i];
    }
    }
    //
    for ($i = 0 ; $i < sizeof($input_letters); $i++) {
    $value = $input[$input_letters[$i]];
    if ($i == 0) {
        $sum += $value;
    } else {
    if ($input_operators[$i-1] == '+') {
    $sum += $value;
    } else if ($input_operators[$i-1] == '-')  {
    $sum -= $value;
    }
    }
    }
} else {
echo "Error: expression not correct form";
}
?>
<form action=""  method="post"> 
    Number A: <input type="text" name="input[a]" value="<?php echo $input['a']; ?>" size=3> <br/>
    Number B: <input type="text" name="input[b]" value="<?php echo $input['b']; ?>" size=3> <br> 
    Number C: <input type="text" name="input[c]" value="<?php echo $input['c']; ?>" size=3> <br> 
    Number D: <input type="text" name="input[d]" value="<?php echo $input['d']; ?>" size=3> <br>
    <br>
    Expression: <input type = "text" name = "expression" value="<?php echo $expression ?>">  = 
<?php echo $sum; ?><br>
    Sum: <?php echo $sum; ?><br>
    <input type="submit" name="Calculate" /> 
</form>
于 2013-10-29T12:46:38.257 回答