0

これが私がやりたいことです。私はクラスを持っており、内部SomeClassには2つの変数で構成される関数があり、それぞれが数値を持っています。SomeClassそれ自体に投稿するフォーム 以外の投稿データに依存関係がある 2 つの変数の配列を返したいと考えています。

<?php 
class SomeClass{

    private $someVar1;
    private $someVar2;

    public function setVars($var1,$var2) {  
       $this->someVar1 = $var1;
       $this->someVar2 = $var2;
    }

    function __construct() { 

    }

    function setFraction() {
          $sum['num'] = 140*pow($this->someVar1,0.75);
          $sum['den'] = $sum['num']/$this->someVar2;
          return $sum;
    }
}

if(isset($_POST['num'])){$num = preg_replace('/\D/', '', $_POST['num']);}
elseif(isset($_POST['den'])){$den = preg_replace('/\D/', '', $_POST['den']);}
?>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">

  Numerator:<input type="text" value="<?php if(isset($num)){echo $num;}?>" name="num" /><br />

  Denominator:<input type="text" value="<?php if(isset($den)){echo $den;}?>" name="den" /><br />

  <input type="submit" value="Go" name="Go"> 

</form>

<?php if(isset($num,$den)):
  $obj = new SomeClass();
  $obj->setVars($num,$den);
  $sum=$obj->setFraction();?>

  <pre>
    <?php print_r($obj->setFraction());?> 
  </pre>

  <ul>
    <?php foreach($sum as $val):?>
      <li><?php echo $val['num']?></li>
      <li><?php echo $val['den']?></li>
    <?php endforeach;?>
  </ul>

<?php endif;?>

スクリプトを実行する$numと、 とのデータ$denが送信されて返されsetFraction()ますが、 foreach ループで配列を反復処理しようとすると、戻りデータが得られません。私はそれが単純なものだと確信しています.foreachループで試してみましたが、同じ結果が得られなかったので、どんな助けも素晴らしいでしょう.thx.

編集:

<?php if(isset($num,$den)):
  $obj = new SomeClass();
  $obj->setVars($num,$den);
  $array = $obj->setFraction();?>

  <ul>
    <li><?php echo $array['num']?></li>
    <li><?php echo $array['den']?></li>
  </ul>

<?php endif;?>
4

4 に答える 4

1

返されたデータを変数に格納してから、繰り返します。

///

<?php if(isset($num,$den)):
  $obj = new SomeClass();
  $obj->setVars($num,$den);
  $array = $obj->setFraction();?>


  <ul>
    <?php foreach($array as $val):?>
      <li><?php echo $val['num']?></li>
      <li><?php echo $val['den']?></li>
    <?php endforeach;?>
  </ul>

<?php endif;?>
于 2012-10-11T11:35:05.383 に答える
1

$sum=$obj->setFraction();$sumに代入していません

于 2012-10-11T11:38:12.357 に答える
1

auの戻り値を$obj->setFraction()変数に代入していません。あなたがする必要があります:

$sum=$obj->setFraction();

そして、すべて問題ないはずです。

という変数を返すからといっ$sumて、その変数名がスクリプトの本体に戻ったときに使用されるわけではありません。

あなたが承認時に正しく述べているように、foreachブロックは必要ないことに気付きました。$sum['num']とを使用するだけ$sum['den']です。ごめんね~もっと早く気づくべきだった

于 2012-10-11T11:36:17.083 に答える
-1

$sum の代わりに $obj->sum を使用する必要があります。

于 2012-10-11T11:35:09.263 に答える