рекурсия php - уведомление: неопределенное смещение: 20 массив - PullRequest
1 голос
/ 19 марта 2011

Я работаю над анализом следующей строки, но в то же время пытаюсь избавиться от текущего неопределенного смещения в массиве индекса. Я был бы признателен за некоторую помощь с неопределенной проблемой смещения.

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));

1 Ответ

1 голос
/ 19 марта 2011

Чтобы избавиться от ошибок, добавьте эту строку в начало вашей функции:

$array = array();

и замените эту строку:

$array[$x] .= $my_char;

с этим:

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

Чтобы получить помощь по рекурсии, вам нужно описать ее желаемое поведение.

...