2011-03-19 60 views
1

我正在努力解析下面的字符串,但同時試圖擺脫索引數組上的當前未定義的偏移量。我希望有一些幫助/未定義的抵消問題。php遞歸 - 通知:未定義偏移量:20數組

error_reporting(E_ALL); 
ini_set('display_errors', '1'); 
function my_recursion($String, &$Inc) { 
    $l = strlen($String); 
    $has_quotes = 0; $array = array(); 
    $x= 0; 
    for ($Inc; $Inc < $l; $Inc++) { 
     $my_char = $String[$Inc]; 
     if ($my_char == '(' && !$has_quotes) { 
      $Inc++; 
      $array[$x] = my_recursion($String, $Inc); 
      $x++; 
     } else if ($my_char == '"') { 
      $has_quotes = !$has_quotes; 
      if (!$has_quotes) 
       $x++; 
     } else if ($has_quotes) { 
      $array[$x] .= $my_char; 
     } 
    } 
    print_r($array); 
} 
$String = '(("HELLO"("BAR")("FOO")()""))'; 
$Inc = 0; 
(my_recursion($String, $Inc)); 
+0

用小寫字母寫變量名稱。 在定義它們之前不要使用數組array(); 描述你的功能在提問時應該做什麼。 無法在此處重現您的錯誤。 – 2011-03-19 05:41:45

+0

@tokam:感謝提示,複製你必須添加的'notice':error_reporting(E_ALL); ini_set('display_errors','1');' – JoshDarrow 2011-03-19 05:47:43

+0

我看到了這個提示,這是因爲你沒有首先定義它就使用了數組。 – 2011-03-19 05:52:01

回答

0

爲了擺脫錯誤的,這一行添加到您的函數的開始:

$array = array(); 

並替換該行:

$array[$x] .= $my_char; 

與此:

$array[$x] = isset($array[$x])? $array[$x].$my_char : $my_char; 

爲了幫助您遞歸,您將需要描述其期望的行爲。

+0

謝謝,那很完美! – JoshDarrow 2011-03-19 06:46:36