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 :: Возврат значений по ссылке. Не работает на домашнем веб-сервере

 PHP.SU

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


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

> Описание: Начал изучение PHP. Выполнял как в статье по ссылкам. Не все работает.
voltdem
Отправлено: 02 Февраля, 2011 - 08:16:08
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Февр. 2011  


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




Использовал XAMPP 1.7.3 и Denwer.
Не работает возврат значений по ссылкам.

<?php
function &find_var($var1,$var2){
return $var1;
}

$a=10;
$b=100;
$perem = &find_var($a,$b);

$perem++;
echo $a."<br />".$b."<br />";
echo $perem;
?>
выводит:
10
100
11
Хотя судя по теории, должно выводить одинаковые значения $a и $perem.
Встретил подобные примеры в книге "Джон Коггзолл. PHP5.Полное руководство"
C 52 стр. подобный пример с ссылками тоже не работает.
Подскажите, почему такое происходит?
PS У обоих веб-серверов php 5.3.x.
 
 Top
grefon
Отправлено: 02 Февраля, 2011 - 10:28:14
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 823
Дата рег-ции: Нояб. 2010  


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




Скрипт отрабатывает все правильно. И почему $a и $perem должны быть одинаковы, когда Вы делаете $perem++;?

PS. Обрамляйте код в спец-теги!


-----
____________________________________________________________________
Ну как то так, наверное.
http://grefon[dot]com
 
 Top
OrmaJever Модератор
Отправлено: 02 Февраля, 2011 - 13:07:48
Post Id



Активный участник


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


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




$perem будет равно 10 только если написать вот так

а последующий вызов уже будет на одни больше.


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
voltdem
Отправлено: 03 Февраля, 2011 - 08:51:58
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Февр. 2011  


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




http://php.su/learnphp/?re
Я у меня конкретный пример не работает
Цитата:

Возврат значений по ссылке
Рассмотрим еще одну возможность пользовательских функций PHP - возврат ссылок.

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

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. function &find_var($param)
  3. {
  4.      /* ... код ... */
  5.      return $found_var;
  6. }
  7.  
  8. $foo =& find_var($bar);
  9. $foo->x = 2;
  10. ?>

В этом примере устанавливается свойство объекта, возвращённого функцией find_var, а не его копии, как было бы без использования ссылок.

В том то и прикол, что $perem по теории должна ссылаться на $a, что у меня не происходит, а присваивается значение переменной $a.
(Добавление)
PS. Я пробовал и этот пример, и создавал класс для объекта, буду благодарен, если вы приведете работающий у вас пример по данной теории.
Все приведенные выше высказывания правильны без использования ссылок, в данном же примере четко говорится про ссылки.
 
 Top
TM123
Отправлено: 03 Февраля, 2011 - 10:01:43
Post Id


Новичок


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


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




Не все примеры и не всегда работают или их описание соответствует тому что они делают.

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

$a вы передаете по значению, почему в $perem у вас должна быть ссылка на $a?


-----
Программим потихоньку http://www[dot]altycon[dot]ru
 
 Top
Alex_1
Отправлено: 25 Ноября, 2011 - 01:05:31
Post Id


Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Нояб. 2011  


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




CODE (htmlphp):
скопировать код в буфер обмена
  1. function &find_var ($three) {
  2.  
  3. if (($three > 0) && ($three <= 10)) return $three;
  4.  
  5. }
  6.  
  7. $c_three = 4;
  8. $right_var = &find_var (&$c_three);
  9. $right_var++;
  10.  
  11. echo $c_three . ' ' . $right_var;


Вот так работает возврат значения по ссылке.
Можно без условного оператора но с возвратом значения.

(Отредактировано автором: 25 Ноября, 2011 - 01:17:12)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Если скрипт не работает »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB