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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> $$ в пхп 
:(
    Опции темы
Kasperskiy
Дата 25.4.2011, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Встретил вот такой кусок кода, что это означает, интересно в основном двойной знак доллара.

Код

foreach($vars as $k=>$v){
  $$k = $v; //что здесь произошло, и что это за двойной бакс?
}


Это сообщение отредактировал(а) Kasperskiy - 25.4.2011, 16:27
PM MAIL   Вверх
SneG0K
Дата 25.4.2011, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Max Mara
***


Профиль
Группа: Завсегдатай
Сообщений: 1887
Регистрация: 1.12.2007
Где: Wis Dells

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



Код

$a = 'b';
$b = 'c';
echo $$a;

PM WWW Skype   Вверх
Kasperskiy
Дата 25.4.2011, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код

$a = 5;
$variable = 'a';
echo $$variable; // 5


А почему пятёрка в результате на экран?
Смотрите. Переменная variable была равна значению строковому а. 
А как эта буква маленькая а, превратилась в переменную a в объявленную раннее?
PM MAIL   Вверх
gta4kv
Дата 25.4.2011, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


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

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



Ответ в название темы, всё дело в двух знаках доллара ($$).
PM MAIL   Вверх
Kasperskiy
Дата 25.4.2011, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



С этим вроде уяснил, а вот если три знака доллара будет, где тогда значение искаться будет?
Если написать просто echo $clown; Хотя такой переменной не существует ничего на экран не выведется и ошибок не выдаст. Почему?

Это сообщение отредактировал(а) Kasperskiy - 25.4.2011, 18:03
PM MAIL   Вверх
bars80080
Дата 25.4.2011, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

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



Цитата(Kasperskiy @  25.4.2011,  17:38 Найти цитируемый пост)
Если написать просто echo $clown; Хотя такой переменной не существует ничего на экран не выведется и ошибок не выдаст. Почему?

потому что ошибки выключены
PM MAIL WWW   Вверх
Kasperskiy
Дата 25.4.2011, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



РЕбята, заработало у меня.
Код

$a=5;$b='a';$c='b';$d='c';$e='d';$f='e';$g='f';$h='g';$i='h';$j='i';$k='j';$l='k';
$m='l';$n='m';$o='n';$p='o';$q='p';$r='q';$s='r';$t='s';$u='t';$v='u';$w='v';
$x='w';$y='x';$z='y';$variable='z';
echo $$$$$$$$$$$$$$$$$$$$$$$$$$$variable;


Результат на экран  5

Добавлено через 4 минуты и 2 секунды
Код

потому что ошибки выключены 

А как их включить?

Это сообщение отредактировал(а) Kasperskiy - 25.4.2011, 21:20
PM MAIL   Вверх
Kasperskiy
Дата 25.4.2011, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



В чём прикол такого использования. Даёт возможность значение использовать в качестве названия переменной, в этом основной прикол?
PM MAIL   Вверх
bars80080
Дата 25.4.2011, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

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



Цитата(Kasperskiy @  25.4.2011,  21:20 Найти цитируемый пост)
А как их включить?

в конфигурационном файле или в .htaccess прописать

display_errors On

можно тоже самое из пхп командой ini_set()

включить все виды сообщений:

Код

error_reporting(E_ALL|E_NOTICE);



Цитата(Kasperskiy @  25.4.2011,  21:40 Найти цитируемый пост)
В чём прикол такого использования. Даёт возможность значение использовать в качестве названия переменной, в этом основной прикол? 

ну, обычно методика вводится не для развлечения, а для выполнения разных задач. в определённой сфере подобное использование неизвестных переменных имеет популярность. но средний пхп-программист, по мере обретения навыков кодирования, впоследствии отказывает от использования этой фичи, как путанной, ненадёжной и небезопасной
PM MAIL WWW   Вверх
Kasperskiy
Дата 25.4.2011, 23:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Скажите, а в пхп такие же указатели как в С++ есть?
Ну например типа такого вывода.
Код

#include <iostream>
#include <iomanip>
using namespace std;


int main(){
int a=100;  // переменная занимает 4 байта
int *p = &a;  // указатель, занимает 4 байта, хранит указатель на ячейку, где находится переменная a
int &r = a;  // ссылка, любое обращение к ней просто обращается к ячейке переменной a
cout<<p<<setw(5)<<r;
cin.get();
}


Результат:
Код

0012FF60  100



Может сослаться на адрес этой переменной в оперативной памяти?
Вот это как в моём случаи 0012FF60 ?
PM MAIL   Вверх
Kasperskiy
Дата 26.4.2011, 00:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Смотрите, в этом коде:

Код

class Proba{
var $name;
function d(){
$e = 'Привет мир!';
echo 'Результат = '.$this->name = 8; //УКАЗАТЕЛЬ this
}                                         //УКазатель но не ссылка ведь же
                                          //Значит есть указатели в ПХП?
}


$object = new Proba;
$object->d();


Теперь глянул вот сюда: http://php.su/learnphp/phpoo/?classes
Прочитал такое:
Код

Чтобы получить доступ к членам класса внутри класса, необходимо использовать [u]указатель[/u] $this,


Это сообщение отредактировал(а) Kasperskiy - 26.4.2011, 00:46
PM MAIL   Вверх
SneG0K
Дата 26.4.2011, 01:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Max Mara
***


Профиль
Группа: Завсегдатай
Сообщений: 1887
Регистрация: 1.12.2007
Где: Wis Dells

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



Kasperskiy, а что тебя смущает? Да, в PHP есть указатели.
PM WWW Skype   Вверх
ksnk
Дата 26.4.2011, 07:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

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



Цитата(Kasperskiy @  25.4.2011,  23:42 Найти цитируемый пост)
Скажите, а в пхп такие же указатели как в С++ есть?

Как в С++ - нет, а как в PHP - есть smile 


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


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

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