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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Передача по ссылке 
:(
    Опции темы
prototype
Дата 1.7.2012, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте!

Код

<?php

class Test_class {
    public $arr = array('one' => 'test1', 'two' => 'test2');
    function test(&$a) {
        $a =& $this->arr['two'];
    }
}

$c = new Test_class;
$c->test($i);
$i = 'changed';
print_r($c->arr);

?>


Что я делаю не так, почему в примере выше при изменении ссылки $i не меняется значение элемента массива $c->arr ?
PM MAIL   Вверх
Sanchezzz
Дата 1.7.2012, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

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



достаточно указать & только в объявлении функции так попробуйте 
Код

<?php
class Test_class {
    public $arr = array('one' => 'test1', 'two' => 'test2');
    function test(&$a) {
        $a = $this->arr['two'];
    }
}
$c = new Test_class;

$i = 'changed';
$c->test($i);
print_r($i); // test2
?>




--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
prototype
Дата 1.7.2012, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Sanchezzz, 
Нет, в этом случае $i будет хранить независимую копию, а не ссылку.

Мне кажется, я уже понял в чем дело - я не полностью разобрался в принципе действия ссылок, думал, что они работают как поинтеры в C. Здесь я нашел обяснение:
http://www.php.net/manual/ru/language.references.arent.php
Похоже, что таким способом задачу решить невозможно.
PM MAIL   Вверх
Gold Dragon
Дата 2.7.2012, 08:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

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



не забываем ещё почитать про PHP 5.3+ и ссылки

http://www.php.ru/manual/language.references.pass.html

Добавлено через 9 минут и 18 секунд
http://www.php.ru/manual/language.references.html


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0397 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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