[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Ссылки
Evgeniy
Почему этот код работает:
    $arr = array('a', 'b');
$link = &$arr[1];
$link = 'c';
echo 'link = '.$link; // $arr[1] => c

А этот нет:
    function a()
{
$arr_data = array();
for ($i = 0; $i < 10; $i++)
{
$arr_data[$i] = $i;
if ($i == 5) $link = &$arr_data[$i];
}
return array($arr_data, $link);
}
list($data, $link) = a();
$link = 888;
print_r($data); // $data[5] => 5 (? <=)




Спустя 6 часов, 56 минут, 20 секунд (2.01.2010 - 22:19) sergeiss написал(а):
Во-первых, используй, плз, тэги оформления кода (тут на форуме, чтобы было "читабельнее")!

Во-вторых, что значит "код не работает"? Выдает "не тот" результат? А что он вообще должен, по-твоему, делать?

И плюс ко всему не понятно, зачем ты сначала назначаешь величину переменной $link, а потом (тут же, в следующей строке!) переназначаешь?

Спустя 1 день, 14 часов, 44 минуты, 30 секунд (4.01.2010 - 13:03) Evgeniy написал(а):
В первом случае создается ссылка на элемент $arr[1] и затем изменяется его содержимое (работает).
Ну а во втором делается тоже самое, но внутри функции и результат возвращается, т. е. целью является дальнейшее присвоение "чего-либа" элементу на который ссылается $link

Спустя 23 минуты, 53 секунды (4.01.2010 - 13:27) VolCh написал(а):
Почему не работает - понятно: return array($arr_data, $link) "разыменовывает" $link (ссылки в PHP это не указатели в C, хотя часто и похожи) и в конструкции list($data, $link) $link получает просто значение $arr_data[5], но не становится ее синонмимом.
Быстрый ответ:

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