Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите разобрать функцию 
V
    Опции темы
Istergul
  Дата 9.1.2009, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 26.11.2008

Репутация: нет
Всего: нет



Помогите, плиз, разобрать следующую функцию. Никак не могу понять её суть.

Код

function set($name , $var) {
    if (is_array($var) && count($var)) {
        foreach ($var as $key => $key_var) {
            $this->set($key , $key_var);
        } 
             } 
             else $this->data[$name] = $var;
}

PM MAIL   Вверх
godvinn
Дата 9.1.2009, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 407
Регистрация: 4.4.2008
Где: possibility of mo ving to Kyiv

Репутация: 1
Всего: 1



Я так понял к  этой функции есть класс?
 Вот что у тебя в классе  это означает $this->set*?
или что это означает $this->data* ?

как можно разобрать с одного метода не видя исходный класс.


--------------------
Everything happens in life.
user posted image
PM MAIL   Вверх
Majesty
Дата 9.1.2009, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 20.3.2005
Где: Almaty, Kazakhsta n

Репутация: нет
Всего: нет



Да всё просто smile
В классе есть свойство data, представляющее собой массив значений.
Метод set получает имя и значение.
Если значение - не пустой массив (is_array=true и count>0) метод set рекурсивно применяется ко всем элементам массива. Если не массив (или пустой массив) метод set применяется только к переданным ему параметрам.
В результате при исполнении кода:
Код
$values = Array(
   "one" => "million",
   "two" => "rabbits",
   "thee" => "cups of tea"
);

$someObject->set("fields", $values);
/*
   $someObject->data = Array (
      "one" => "million",
      "two" => "rabbits",
      "thee" => "cups of tea"
   )
*/

$someObject->set("fields_count", count($values));
/*
   $someObject->data = Array (
      "one" => "million",
      "two" => "rabbits",
      "thee" => "cups of tea",
      "fields_count" => 3
   )
*/

PM MAIL WWW   Вверх
Istergul
Дата 9.1.2009, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 26.11.2008

Репутация: нет
Всего: нет



godvinn, да, это функция из класса. set это как раз метож этого класса. А переменная data описывается так:
Код

var $data = array();

Просто сложность для понимания заключается именно в рекурсии, которая применяется здесь.


Majesty, спасибо! Очень помог smile

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0836 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.