Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Переменные переменные
 
 автор: alexon   (04.02.2010 в 15:47)   письмо автору
 
 

Может ли кто-нибудь привести пример их реального применения. И не является ли такая неуклюжая словесная конструкция результатом некачественного перевода. Понятнее на мой взгляд переменные в переменных (или переменные переменных).

  Ответить  
 
 автор: Николай2357   (04.02.2010 в 15:59)   письмо автору
 
   для: alexon   (04.02.2010 в 15:47)
 

Вообще принято говорить - "именованные переменные". Почти всегда можно обойтись без них.
Вот к примеру получить переменные с именами ключей массива можно так:
<?php

    $arr 
= array(
                  
'var1' => 10,
                  
'var2' => 20
                  
);
              
        foreach(
$arr as $key => $value)
            $
$key $value;
        
    echo 
$var1$var2;
но если подумать, то лучше так:
<?php

    $arr 
= array(
                  
'var1' => 10,
                  
'var2' => 20
                  
);
              
    
extract($arr);
        
    echo 
$var1$var2;

  Ответить  
 
 автор: Valick   (04.02.2010 в 16:23)   письмо автору
 
   для: Николай2357   (04.02.2010 в 15:59)
 

Мне кажеться автор имел ввиду вот это

  Ответить  
 
 автор: alexon   (04.02.2010 в 17:04)   письмо автору
 
   для: Valick   (04.02.2010 в 16:23)
 

Я знаком с этой ссылкой , это называется присвоение по ссылке (для этого используется &). Но я имел в виду именно $$var.

  Ответить  
 
 автор: Valick   (04.02.2010 в 17:18)   письмо автору
 
   для: alexon   (04.02.2010 в 17:04)
 

Вы шутите? по ссылке и & и $$var

  Ответить  
 
 автор: alexon   (04.02.2010 в 19:20)   письмо автору
 
   для: Valick   (04.02.2010 в 17:18)
 

По ссылке
$var1 = &$var2;
значение переменной $var2 просто получает еще одно имя - $var1. Новый контейнер данных не создается, значение старого не изменяется.

Теперь символические или именованные ссылки (синонимы для переменные переменные ).
$a=10;
$p="a";
$$p=100;

В результате переменная $a =100
При отработке оператора $$p=100; интерпретатор определяет значение переменной $p (у нас "a"), затем ищет переменную $a и уже ей присваивает значение (100).
Таким образом изменилось значение переменной $а, а кроме того для "обнаружения" использовалась переменная $p.
Вот такие шутки :)

  Ответить  
 
 автор: Valick   (04.02.2010 в 20:11)   письмо автору
 
   для: alexon   (04.02.2010 в 19:20)
 

Ага, понятно. Шутить Вы уже перестали и начали издеваться... ладно переживу, но запомню...

  Ответить  
 
 автор: alexon   (04.02.2010 в 20:24)   письмо автору
 
   для: Valick   (04.02.2010 в 20:11)
 

Я разве чем-то обидел? Просто показал различие в понятиях как я их понимаю. По-моему конструктивно ответил на Ваше - Вы шутите.

  Ответить  
 
 автор: Valick   (06.02.2010 в 13:39)   письмо автору
 
   для: alexon   (04.02.2010 в 20:24)
 

Вот это со страницы по ссылке:
$a=10;
$b=20;
$c=30;
$p="a"; // или $p="b" или $p="c" (присваиваем $p имя другой переменной)
echo $$p; // выводит переменную, на которую ссылается $p, т. е. $a
$$p=100; // присваивает $a значение 100

вот это то что написали Вы:
$a=10;
$p="a";
$$p=100; 

Что прикажете думать?

  Ответить  
 
 автор: neadekvat   (06.02.2010 в 13:51)   письмо автору
 
   для: Valick   (06.02.2010 в 13:39)
 

<?php
$a
=10
$p="a"
$
$p=100
echo 
$a;

Попробуйте.

  Ответить  
 
 автор: Trianon   (04.02.2010 в 21:00)   письмо автору
 
   для: alexon   (04.02.2010 в 15:47)
 

Динамически именуемые переменные ($$var) - как правило, признак неряшливой разработки.
Ссылки (т.е.&$var) иногда бывают полезны.
Пример - построение дерева по содержимому таблицы ajacency list (id - pid - name)
<pre>
<?php
include 'dbconnect.php';
$sql "SELECT * FROM tree";
$res mysql_query($sql) or die("Error on $sql : ".mysql_error());
while(
$row  =  mysql_fetch_assoc($res))
{
  
$tree[$row['id']]['c'] = $row//implode('#',$row);
  
$tree[$row['pid']]['n'][] = &$tree[$row['id']];
}
  
var_dump($tree);
?>

  Ответить  
 
 автор: alexon   (04.02.2010 в 21:11)   письмо автору
 
   для: Trianon   (04.02.2010 в 21:00)
 

В принципе я с Вами согласен. Однако задал вопрос, потому что из учебника в учебник кочует "переменные переменные". Ну и подумалось, что может существуют случаи когда их применение эффективно. Спасибо.

  Ответить  
 
 автор: Trianon   (04.02.2010 в 21:48)   письмо автору
 
   для: alexon   (04.02.2010 в 21:11)
 

>.. потому что из учебника в учебник кочует "переменные переменные".

не все йогурты одинаково полезны

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования