0

2番目の条件の1つの条件からの変数の処理に問題があります。私はそのようなものを持っています:

<form name="exampleForm" method="post">
...
<input type="submit" name="firstSubmit" value="Send">
<input type="submit" name="secondSubmit" value="Show">
</form>

<?php
if(isset($_POST['firstSubmit'])) {

 function a() {
  $a = 5;
  $b = 6;
  $c = $a + $b;
  echo "The result is $c";
  return $c;
 }

 $functionOutput = a();
}

if(isset($_POST['secondSubmit'])) {

 echo $functionOutput;
}
?>

最初の条件から変数を操作する必要がある場合$functionOutput、常にエラーメッセージ(未定義の変数)が表示されます。どうすればこの問題を解決できますか?

4

3 に答える 3

2

正確に何をしようとしているのかわかりませんが、2番目のボタンを押したときに$functionOutput、最初の条件として変数が定義されていないfalseため、セクション全体がスキップされます。

スクリプトが終了するとすぐに変数が失われることに注意してください。セッションを調べ、セッション変数を使用してそれを解決することもできますが、それは正確に何をしたいかによって少し異なります。

セッションを使用するには、HTMLの出力を開始する前に、phpブロック全体を移動して、次のような操作を行う必要があります。

<?php
session_start();

if(isset($_POST['firstSubmit'])) {

 function a() {
  $a = 5;
  $b = 6;
  $c = $a + $b;
  return $c;
 }

 $_SESSION['output'] = a();
}


// start html output
?>
<doctype .....
<html ....

// and where you want to echo
if(isset($_POST['firstSubmit'])) {
  echo "The result is {$_SESSION['output']}";
}

if(isset($_POST['secondSubmit'])) {

 echo $_SESSION['output'];
}
于 2012-08-31T14:48:47.260 に答える
1
<?php
$functionOutput = "";

if(isset($_POST['firstSubmit'])) {

 function a() {
  $a = 5;
  $b = 6;
  $c = $a + $b;
  echo "The result is $c";
  return $c;
 }

 $functionOutput = a();
}

if(isset($_POST['secondSubmit'])) {

 echo $functionOutput;
}
?>

修正する必要があります。これは、最初のIFステートメント内で$functionOutputを宣言しているために発生しています。

于 2012-08-31T14:48:30.020 に答える
1

$functionOutput呼び出し時に初期化されないためif(isset($_POST['secondSubmit']))

<?php
if(isset($_POST['firstSubmit'])) {

 function a() {
  $a = 5;
  $b = 6;
  $c = $a + $b;
  echo "The result is $c";
  return $c;
 }

 $functionOutput = a();
}
$functionOutput='12';//intialize
if(isset($_POST['secondSubmit'])) {

 echo $functionOutput;
}
?> 

         **OR**

<?php
if(isset($_POST['firstSubmit'])) {

 function a() {
  $a = 5;
  $b = 6;
  $c = $a + $b;
  echo "The result is $c";
  return $c;
 }

 $functionOutput = a();
}

if(isset($_POST['secondSubmit'])) {
 function a() {
  $a = 5;
  $b = 6;
  $c = $a - $b;
  echo "The result is $c";
  return $c;
 }

 $functionOutput = a();
 echo $functionOutput;
}
?> 
于 2012-08-31T14:52:13.600 に答える