[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вопросы по рекурсивной функции
kentkent17
Всем привет!
Только учусь и мне важно хорошо понимать тот говнокод tongue.gif который я пишу.
Возникли трудности с пониманием рекурсивки, сможете подсказать, все ли я верно понял.

$array = array (
'Товар' => 13,
'Вело' => array (
'Одноколесные' => array (
'(Товар) BMX' => 12,
'(Товар) BMS' => 13),

'Колесики' => 15,
),
);







// Функция отвечает за подсчет кол - ва элементов.

function recursiv ($array, $id = 0) { // Добавляю аргументы $array и id
static $countItems; // Создаю статическую ячейку, для записи значений

if (is_array($array)) { // Проверяю соответствие
foreach ($array as $string) { // Запускаю перебор элементов массива

recursiv ($string, $id); // Создаю рекурсивное погружение, которое будет повторяться при каждой итерации
}
} else {
$countItems += $array; // Записываю значение элемента текущей строки
}

return $countItems; // возвращаю

}

$result = recursiv ($array);

echo $result;


У меня только возникает вопрос, зачем в этом моменте recursiv ($string, $id);
Нужно передавать в качестве аргумента $string.

Объясните кому не сложно, как работает эта маза фака rolleyes.gif
AllesKlar
Цитата (kentkent17 @ 13.04.2017 - 18:46)
foreach ($array as $string) { // Запускаю перебор элементов массива

recursiv ($string, $id); // Создаю рекурсивное погружение, которое будет повторяться при каждой итерации
}



foreach ($array as $child) { // Запускаю перебор элементов массива

recursiv ($child, $id); // Создаю рекурсивное погружение, которое будет повторяться при каждой итерации
}


Так понятнее?
А вот зачем там $id - вот это не понятно.

_____________
[продано копирайтерам]
kentkent17
Цитата (AllesKlar @ 13.04.2017 - 20:51)
Цитата (kentkent17 @ 13.04.2017 - 18:46)
<pre class="sh_sourceCode" rel="php"><span class="sh_control">foreach</span> <span class="sh_symbol">(</span><span class="sh_variable">$array</span> <span class="sh_control">as</span> <span class="sh_variable">$string</span><span class="sh_symbol">)</span> <span class="sh_cbracket">{</span> <span class="sh_comment">// Запускаю перебор элементов массива</span>

<span class="sh_function">recursiv</span> <span class="sh_symbol">(</span><span class="sh_variable">$string</span><span class="sh_symbol">,</span> <span class="sh_variable">$id</span><span class="sh_symbol">);</span> <span class="sh_comment">// Создаю рекурсивное погружение, которое будет повторяться при каждой итерации</span>
<span class="sh_cbracket">}</span></pre>



foreach ($array as $child) { // Запускаю перебор элементов массива

recursiv ($child, $id); // Создаю рекурсивное погружение, которое будет повторяться при каждой итерации
}


Так понятнее?
А вот зачем там $id - вот это не понятно.

Да вы правы и без id работает))

Спасибо!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.