Для чего нужны ссылки, в пхп

alexhemp

Новичок
Перечитай еще раз и так до просветления.

Это вопрос не программирования, а твоего образования.
 

WP

^_^
Они нужны например вот для чего:
PHP:
function div($a,$b,&$error)
{
 if ($a*$b == 0) {$error = 'Division by zero (деление на ноль)!'; return FALSE;}
 else {return $a/$b;}
}
if (!$r = div(10,0,$error)) {echo $error;}
else {echo 'Result: '.$r;}
Т.е. функция принимает в качестве третьего аргумента ссылку на переменную, в которую ей следует записать текст ошибки в случае её возникновения.

-~{}~ 22.05.06 01:53:

p.s. пример не тестил но должен пахать.
 

Ilja87

Новичок
Это был единстенный пункт, который я понял там...
А для чего еще их используют?
Вот напимер не совсем понял этот параграф:
Возвращение по ссылке
PHP:
<?php
function &find_var($param)
{
   /* ... код ... */
   return $found_var;
}

$foo =& find_var($bar);
$foo->x = 2;
?>
Что должн выполнить данный скрипт, ну и какие еще варианты есть у данного метода использования ссылок.
И еще один вопрос сразу назрел, вот этот значек "->", что делает?
 

WP

^_^
Прочти документацию полностью. И не начек, а оператор.
 

Toshka

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

Wicked

Новичок
Toshka
"По идее". Копия будет создана только тогда, когда ты попытаешься этот массив как-либо изменить (в том числе, передвинув позицию поинтера, например, с помощью foreach).
 

WP

^_^
Solid
Что б мы все без тебя делали.
Toshka
Из чего сиё следует?
Wicked
Это шутка?
 

Solid

Drosera anglica
WP
Ладно-ладно...
Ilja87
А ты вообще ходил по ссылке, читал что там написано?
 

Wicked

Новичок
WP
Отнюдь. То же самое происходит, когда в коде выполняется $a = $b; - обе переменные изначально указывают на один и тот же блок памяти. Ровно до тех пор, пока чье-нибудь значение не попробует измениться. Именно в этот момент пхп разделит эти переменные. Это называется оптимизация.
 

WP

^_^
Wicked
Да я как-бы в курсе :D Только это называется COW, а не оптимизация.
 

Wicked

Новичок
WP
1) Если ты все знаешь, то зачем спрашиваешь?
2) Про то, что это COW, я тоже в курсе. А про то, что COW это "не оптимизация", расскажи кому-нибудь другому.
Автор оригинала: Wikipedia
Copy-on-write (sometimes referred to as "COW") is an optimization strategy used in computer programming.
 

Ilja87

Новичок
Solid
Читаю я эту документацию, но просте не могу понять для чего нужно создовать ссылку на переменную? Почему нельзя пользоваться просто одной переменной?(Кроме примера WP с функцией)
 

WP

^_^
Wicked
> Это называется оптимизация.
!=
Это оптимизация.

Чуешь разницу? :)
Ilja87
Тогда оно тебе пока и не надо. В будущем столкнешься с необходимостью использования ссылок.
 

Solid

Drosera anglica
Автор оригинала: Ilja87
Solid
Читаю я эту документацию, но просте не могу понять для чего нужно создовать ссылку на переменную? Почему нельзя пользоваться просто одной переменной?(Кроме примера WP с функцией)
Очень удобно использовать в рекурсивных функциях. Можно добиться что-то похожего через static.
 

Wicked

Новичок
Ilja87
а еще для того, чтобы можно было без затей растратить всю память пхп в никуда. Естественно, это вредный совет :)
PHP:
$a = array();
$a[] = str_repeat("a", 1000000);
$a[] = &$a;
unset($a);
 

Valdisss

Guest
Re: Для чего нужны ссылки, в пхп

Автор оригинала: Ilja87
Читал мануал по пхп http://ru.php.net/manual/ru/language.references.php#language.references.whatare
и так и не понял для чего они вобще нужны?
Ссылки нужны для того, чтобы не занимать в памяти дополнительное пространство пример:
$a=2;
$b=$a;

В данном случае под переменную а выделяется пространство памяти, когда ты делаешь $b=$a ты занимаешь двойное пространство. Если же ты делаешь так $b=&$a - ты создаёшь ссылку и дополнительного пространства не занимаешь, но при этом если меняется $a меняется и $b.

Вообще не рекомендуется использовать ссылки, так как движок Zend 2 и так хорошо отрабатывает пространство памяти. ;)
 
Сверху