所以这就是我想要做的事情,我有一个类,在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;?>
答案 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。