从对象传递变量数组

时间:2012-10-11 11:31:21

标签: php forms class

所以这就是我想要做的事情,我有一个类,在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循环尝试了它并且没有相同的结果,任何帮助都会非常好,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 个答案:

答案 0 :(得分: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;?>

答案 1 :(得分:1)

auYou你没有将$obj->setFraction()的返回值赋给变量。你需要这样做:

$sum=$obj->setFraction();

一切都应该没问题。

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

我刚刚注意到,正如你在接受中所说的那样,你不需要foreach阻止。只需使用$sum['num']$sum['den']即可。对不起 - 我之前应该注意到

答案 2 :(得分:1)

您尚未将$sum=$obj->setFraction();分配给$ sum

答案 3 :(得分:-1)

你应该使用$ obj-&gt; sum而不是$ sum。