0

所以这就是我想要做的,我有一个类,在里面SomeClass,有一个由 2 个变量组成的函数,每个变量都有一个数值。我想返回一个包含两个变量的数组,这些变量在发布SomeClass到自身的表单之外的发布数据中具有依赖关系。

<?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 循环尝试过,但没有相同的结果,任何帮助都会非常好,谢谢。

编辑:

<?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

au您没有将返回值分配给$obj->setFraction()变量。你需要做:

$sum=$obj->setFraction();

一切都应该没问题。

仅仅因为您返回一个名为的变量$sum并不意味着该变量名一旦返回到脚本的主体中就会被使用。

我刚刚注意到,正如您在接受中正确陈述的那样,您不需要foreach阻止。只需使用$sum['num']$sum['den']。对此感到抱歉-我应该早点注意到

于 2012-10-11T11:36:17.083 回答
1

你还没有分配$sum=$obj->setFraction();给 $sum

于 2012-10-11T11:38:12.357 回答
-1

你应该使用 $obj->sum 而不是 $sum。

于 2012-10-11T11:35:09.263 回答