Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Тонкости, или слон по клумбам.. [2]

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): « 1 [2]   

> Описание: конструкции...конструкции...конс трукции...
Roler
Отправлено: 02 Мая, 2009 - 19:49:51
Post Id



Посетитель


Покинул форум
Сообщений всего: 458
Дата рег-ции: Авг. 2008  
Откуда: Россия


Помог: 1 раз(а)




DeepVarvar
Вот чесслово, написал для себя cms и даже не задумывался особо в чём разница)
 
 Top
Stierus Супермодератор
Отправлено: 04 Мая, 2009 - 10:32:46
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




Roler, зря Улыбка
 
My status
 Top
CodeWarrior
Отправлено: 07 Мая, 2009 - 10:58:48
Post Id



Частый гость


Покинул форум
Сообщений всего: 157
Дата рег-ции: Янв. 2009  
Откуда: Албания


Помог: 0 раз(а)




Подобные вопросы автоматически отпадают когда хоть одним глазком заглядываешь в документацию по php, которая находится тут http://www.php.net/manual/ru/ А имеено в справочник функций...
 
 Top
Гость
Отправлено: 07 Мая, 2009 - 20:10:01
Post Id


УДАЛЁН










CodeWarrior Я понимаю что мануал это полезная вещь но всетаки не везде написан и не все знают что необъявленная переменная и переменная равная NULL это одно ито же
 
 Top
CodeWarrior
Отправлено: 08 Мая, 2009 - 15:55:17
Post Id



Частый гость


Покинул форум
Сообщений всего: 157
Дата рег-ции: Янв. 2009  
Откуда: Албания


Помог: 0 раз(а)




JustUserR пишет:
переменная равная NULL это одно ито же

В самом этом предложении уже есть ответ на вопрос: в чем разница? А заглядывать в справочник на php.net - это первым делом...
 
 Top
valenok Модератор
Отправлено: 08 Мая, 2009 - 19:00:53
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




Чтобы понять разницу работы функций empty(), isset(), is_null() нужно понять как хранит php переменные в памяти. Компьютерная память состоит из большого количества маленьких ячеек. В эти ячейки и записываются твои данные. Обращение к той или иной ячейке происходит при помощи идентификатора ячейки в памяти, её места.

На деле интерпретатор хранит связь между названием переменной и идентификатором ячейки в памяти. Мы же в свою очередь работаем с названием, вместо того чтобы самим запоминать идентификаторы ячеек, которые и без того, известны одному интерпретатору.

Когда мы присваиваем переменной значение в первый раз, интерпретатор выбирает ячейку в памяти, заносит туда наше значение и привязывает название переменной к определенному идентификатору.
Когда к названию переменной соответствует ячейка в памяти, переменная считается определенной и isset() вернет true.
Empty() означает что содержимое ячейки является числом ноль, строкой нулевой длины или вовсе отсутствует.

Значение Null сбрасывает привязку названия переменной к ячейке в памяти и переменной больше не соответствует никакая ячейка. Переменная просто никуда не указывает и ни к чему не ведет. В этом случае переменная считается неопределенной,
isset вернет false, а вот is_null вернет true, так как название есть а привязка к ячейке отсутствует.

Когда в вызове функции переходит передача переменной по ссылке происходит передача идентификатора ячейки, а не значения. Когда ты вызываешь функцию func($a) интерпретатор в первую очередь достает из памяти значение переменной $a и передает это значение в функцию. После этого в самой функции создается новая переменная которой присваивается это значение.

Когда функция вызывается с параметром по ссылке func(&$a) интерпретатор передает в функцию не значение переменной, а идентификатор ячейки в памяти
При вызове функции с параметрами обычным способом все изменения происходят в другой, новой ячейке памяти и за пределами функции работа продолжается со старой ячейкой. А при передаче по ссылке все изменения происходят в той же ячейке и поэтому изменения видны и из вне самой функции.

Добавлено в Урок № 3 и Урок № 1


-----
Truly yours, Sasha.
 
My status
 Top
Гость
Отправлено: 08 Мая, 2009 - 20:44:31
Post Id


УДАЛЁН










valenok ЫЫЫ интересно кто этого не знал Улыбка
Также добавлю что ваша теория сильно упрощена и я бы не сказал что каждой перменной $vrb присваивается конкретный участнок памяти ибо если это строка то это скорее всего char* переменной длины а так как в PHP свободная питизация данных то алгоритм конвертации это отдельная вещь
 
 Top
valenok Модератор
Отправлено: 08 Мая, 2009 - 23:20:23
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




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


-----
Truly yours, Sasha.
 
My status
 Top
LONGMAN
Отправлено: 11 Мая, 2009 - 17:32:46
Post Id


Новичок


Покинул форум
Сообщений всего: 43
Дата рег-ции: Февр. 2009  
Откуда: Tbilisi, Georgia


Помог: 0 раз(а)




Можете дать точную ссылку на эту статью в вики
 
 Top
valenok Модератор
Отправлено: 11 Мая, 2009 - 18:41:18
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




На русском не смотрел, но там часто многое недописывают.
В Английской википедии должно быть что-то по запросам
Static memory allocation, Dynamic memory allocation и Automatic memory allocation
или что-то в этом роде. А вообще гугл должен что нибудь и сам выдать на запрос
распределение памяти.


-----
Truly yours, Sasha.
 
My status
 Top
Страниц (2): « 1 [2]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB