2013-12-23 271 views
1

我創建的類class.minmax.php__call()方法不能正常工作

<?php 
class minmax 
{ 
    public function __call($method, $arg) 
    { 
     if(!is_array($arg)) return false; 
     $value = $arr[0]; 
     if ($method == "min") 
     { 
      for($i = 0; $i < count($arg); $i++) 
      { 
       if($arg[$i] < $value) $value = $arg[$i]; 
      } 
     } 

     if($method == "max") 
     { 
      for($i = 0; $i < count($arg); $i++) 
      { 
       if($arg[$i] > $value) $value = $arg[$i]; 
      } 
     } 

     return $value; 
    } 
} 
?> 

,並試圖用它

<?php 
require_once("class.minmax.php"); 

$obj = new minmax(); 
echo $obj->min(43, 18, 5, 23, 10, 56, 12); 
echo "<br>"; 
echo $obj->max(41, 69, 45, 105, 28, 91); 

?> 

但結果我從只拿到了數105max方法的一部分。
這是本書的例子,我不明白爲什麼它不起作用?

+0

PS。 'if($ method ==「min」){return min($ arg);} elseif($ method ==「max」){return max($ arg);}' –

回答

4

你有一個錯字,改變$value = $arr[0];$value = $arg[0];

價值$arr[0]函數內不存在。因此,與min函數執行期間的參數數組的其他元素相比,它是null。附件號碼:

+0

由於注意力不集中造成了愚蠢的錯誤:(非常感謝解釋! –

+0

@ truslivii.lev歡迎:) – zavg