2012-10-11 105 views
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;?> 

當我運行該腳本,正在發送,並與setFraction()回來了,但是當我試圖通過在foreach循環數組迭代,我沒有得到任何回報數據$num$den後的數據。我確信它的一些簡單的東西,我用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

你沒有指定'$金額= $ obj-> setFraction();''到$ sum' – XMen

回答

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;?> 
+0

謝謝您!這個答案是最接近的一個。我使用'echo $ array ['num'];'而不是使用foreach循環,它的工作原理! – dcd0181

-1

您應該使用$ obj->總和,而不是$總和。

+1

但總和不是階級的財產,這將如何工作? –

+0

它不會,你是對的。給我打麻煩。 –

1

auYou're不會將$obj->setFraction()的返回值分配給變量。你需要做的:

$sum=$obj->setFraction(); 

和所有應該沒問題。

只是因爲你要返回一個名爲$sum的變量並不意味着這個變量名一旦回到你的腳本的主體就被使用。

我剛剛注意到,正如您在您的接受中正確說明的那樣,您不需要foreach塊。只需使用$sum['num']$sum['den']即可。比較遺憾的是 - 我應該早就注意到

1

你還沒有分配給$sum=$obj->setFraction(); $總結