помогите понять код php

Любые обсуждения, не нарушающие правил форума.

Модератор: Модераторы

помогите понять код php

Сообщение Sniper » 31.05.2007 10:30:40

разбираю чужой код хочу понять, читаю php.net и коментирую
интересуют комментарии там где в конце строки есть //1
и ещё, чем занимает массив(?) refs
Код: Выделить всё
<?php
$text = "somefunc1
\tsub1
\tsub2
\tsub3
\t\tsubtext1
\t\tsubtext2
somefunc2
\tcoolstr1
\t\tcool1
\tcoolstr2

somefunc3";
$target = array();
$refs = array(&$target); //1
//заменяем текст
$text = str_replace(array("\r\n", "\n\r"), array("\n", "\n"), $text);
// разбиваем строку на подстроки, в качестве разделителя \n
foreach(explode("\n", $text) as $str) {
    if (($val = trim($str)) === '') continue; //1
    $level = 0;
    while (substr($str, $level++, 1) === "\t"); //вернуть подстроку строки str налало в level++ 1 символ
    while ($level < count($refs)-1) {
        array_pop($refs); //извлеч последний элемент массива
    }
    if ($level >= count($refs)) {
        $refs[count($refs)-1][$val] = array(); //1
        array_push($refs, &$refs[count($refs)-1][$val]); //добавить элемент в конец массива
    } else {
        $refs[count($refs)-2][$val] = array(); //1
        $refs[count($refs)-1] = &$refs[count($refs)-2][$val];//1
    }
?>

код разбирает "дерево" и записывает его в массив
Sniper
постоялец
 
Сообщения: 472
Зарегистрирован: 28.05.2005 13:02:42

Сообщение shade » 31.05.2007 15:22:30

$refs = array(&$target);
Создается массив с одним элементом с ключем 0 и значением $target (точнее после этой инструкции $ref[0] становиться тем же $target - при изменении одного меняется другой см.. Ссылки. Разъяснения

Код: Выделить всё
$val = trim($str);
if ( $val === '' ) continue;

Так понятнее?

Остальное должно быть понятным из первых примеров

IMHO это сайт о FreePascal а не о PHP...
Аватара пользователя
shade
энтузиаст
 
Сообщения: 879
Зарегистрирован: 21.02.2006 20:15:48
Откуда: http://shamangrad.net/


Вернуться в Потрепаться

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

Рейтинг@Mail.ru