Web студия "GrandView"
  Главная   Написать Контакты
   
   
О проекте
Руководство php
 

Глава 12. Переменные

Основы

Переменные в PHP представлены знаком доллара с последующим именем переменной. Имя переменной чувствительно к регистру.

Имена переменных соответствуют тем же правилам, что и остальные наименования в PHP. Правильное имя переменной должно начинаться с буквы или символа подчеркивания с последующими в любом количестве буквами, цифрами или символами подчеркивания Это можно отобразить регулярным выражением: '[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*'

Замечание: Для наших целей буквы здесь - это a-z, A-Z, и ASCII-символы со 127 по 255 (0x7f-0xff).

<?php
$var
= "Bob";
$Var = "Joe";
echo
"$var, $Var";      // выведет "Bob, Joe"

$4site = 'not yet';     // неверно; начинается с цифры
$_4site = 'not yet';    // верно; начинается с символа подчеркивания
$tдyte = 'mansikka';    // верно; 'д' это (Дополнительный) ASCII 228.
?>

В PHP 3 переменные всегда присваивались по значению. То есть, когда вы присваиваете выражение переменной, все значение оригинального выражения копируется в эту переменную. Это означает, к примеру, что после присвоения одной переменной значения другой, изменение одной из них не влияет на значение другой. Дополнительную информацию об этом способе присвоения смотрите в разделе Выражения.

PHP 4 предлагает иной способ присвоения значений переменным: присвоение по ссылке. Это означает, что новая переменная просто ссылается (иначе говоря, "становится псевдонимом" или "указывает") на оригинальную переменную. Изменения в одной переменной отражаются на оригинале, и наоборот. Это также означает, что копирования не происходит; таким образом, присвоение осуществляется быстрее. Однако, любое увеличение скорости будет хорошо заметно только в сжатых циклах или при присвоении больших массивов или объектов.

Для присвоения по ссылке, просто добавьте амперсанд (&) к началу имени присваиваемой (исходной) переменной. Например, следующий фрагмент кода дважды выводит 'My name is Bob':

<?php
$foo
= 'Bob';              // Присваивает $foo значение 'Bob'
$bar = &$foo;              // Ссылка на $foo через $bar.
$bar = "My name is $bar"// Изменение $bar...
echo $bar;
echo
$foo;                 // меняет и $foo.
?>

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

<?php
$foo
= 25;
$bar = &$foo;      // Это верное присвоение.
$bar = &(24 * 7);  // Неверно; ссылка на неименованное выражение.

function test()
{
   return
25;
}

$bar = &test();    // Неверно.
?>



add a note add a note User Contributed Notes
Переменные
Anonymous
13-Oct-2007 03:24
That's a pedantic comment, but at
http://www.php.net/manual/en/language.variables.php
you could shorten the regular expression for variable names substituting a-zA-Z with A-z. These are exactly the same character sets. In result it would be:
[A-z_\x7f-\xff][A-z0-9_\x7f-\xff]*
alexandre at nospam dot gaigalas dot net
06-Jul-2007 09:13
Here's a simple solution for retrieving the variable name, based on the lucas (http://www.php.net/manual/en/language.variables.php#49997) solution, but shorter, just two lines =)

<?php
function var_name(&$var, $scope=0)
{
   
$old = $var;
    if ((
$key = array_search($var = 'unique'.rand().'value', !$scope ? $GLOBALS : $scope)) && $var = $old) return $key
}
?>
jsb17 at cornell dot edu
20-Feb-2007 08:48
As an addendum to David's 10-Nov-2005 posting, remember that curly braces literally mean "evaluate what's inside the curly braces" so, you can squeeze the variable variable creation into one line, like this:

<?php
 
${"title_default_" . $title} = "selected";
?>

and then, for example:

<?php
  $title_select
= <<<END
    <select name="title">
      <option>Select</option>
      <option $title_default_Mr  value="Mr">Mr</option>
      <option $title_default_Ms  value="Ms">Ms</option>
      <option $title_default_Mrs value="Mrs">Mrs</option>
      <option $title_default_Dr  value="Dr">Dr</option>
    </select>
END;
?>
code at slater dot fr
25-Jan-2007 02:10
Here's a pair of functions to encode/decode any string to be a valid php and javascript variable name.

<?php

function label_encode($txt) {
 
 
// add Z to the begining to avoid that the resulting
  // label is a javascript keyword or it starts with a
  // number
 
$txt = 'Z'.$txt;
 
 
// encode as urlencoded data
 
$txt = rawurlencode($txt);
 
 
// replace illegal characters
 
$illegal = array('%', '-', '.');
 
$ok = array('
Новости
11 июля 2007
Сайт запущен
© 2007 info@grandviewstudio.com
land cruiser 200 салон ; ремонт компьютеров на битцевском парке Z058440144362 Z348613067571