2015-04-22 34 views
1

我試圖根據字符串檢索置換集。但是,我無法正確執行該功能。我對公共靜態,或私人不太好,或者我應該如何調用這個函數。無法在Laravel中調用自定義函數

<?php namespace Helpers; 

class Helper { 

public static function permute($str,$i,$n) 
{ 
    if ($i == $n) 
     return "$str\n"; 
    else { 
     for ($j = $i; $j < $n; $j++) { 
      swap($str,$i,$j); 
      permute($str, $i+1, $n); 
      swap($str,$i,$j); // backtrack. 
     } 
    } 
} 

public static function swap(&$str,$i,$j) { 
    $temp = $str[$i]; 
    $str[$i] = $str[$j]; 
    $str[$j] = $temp; 
}} 

這就是我從我的控制器調用函數的方法。

Helper::permute($str,0,strlen($str)) 

我得到這個錯誤:

Call to undefined function Helpers\swap()

回答

3

你調用從靜態上下文的方法swap()permute(),但處理它們,就好像它們是非靜態的。
嘗試將其更改爲以下:

public static function permute($str,$i,$n) 
{ 
    if ($i == $n) 
     return "$str\n"; 
    else { 
     for ($j = $i; $j < $n; $j++) { 
      self::swap($str,$i,$j); 
      self::permute($str, $i+1, $n); 
      self::swap($str,$i,$j); // backtrack. 
     } 
    } 
} 
+0

改變調用的方法3線到自我::,但不知道爲什麼它不返回任何值。 – 1myb

相關問題