PHP: Оператор присвоения - Manual

downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

Побитовые операторы Арифметические операторы

Last updated: Sat, 27 Jan 2007

view this page in

# Оператор присвоения

Базовый оператор присвоения обозначается как `=`. На первый взгляд может показаться, что это оператор "равно". На самом деле это не так. В действительности, оператор присвоения означает, что левый операнд получает значение правого выражения, (т.е. устанавливается результирующим значением).

Результатом выполнения оператора присвоения является само присвоенное значение. Таким образом, результат выполнения `$a = 3` будет равен `3`. Это позволяет использовать конструкции вида:

`<?php $a = ($b = 4) + 5; // результат: $a установлена значением 9, переменной $b присвоено 4. ?>`

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

`<?php
$a = 3;
$a += 5; // устанавливает $a значением 8, аналогично записи: $a = $a + 5;
$b = "Hello ";
$b .= "There!"; // устанавливает $b строкой "Hello There!", как и $b = $b . "There!";
?>`

Обратите внимание, что присвоение копирует оригинальную переменную в новую (присвоение по значению), таким образом все последующие изменения одной из переменных на другой никак не отражаются. Начиная с PHP 4, также поддерживается присваивание по ссылке, используя синтаксис `$var = &$othervar;`, но в PHP 3 такая возможность отсутствует. 'Присвоение по ссылке' означает, что обе переменные указывают на одни и те же данные и никакого копирования не происходит. Для получения более полной информации об этой возможности, обратитесь к разделу документации Подробно об указателях.

add a note User Contributed Notes
Оператор присвоения
atreux at gmail d o t com
01-Mar-2007 08:26
`a comment on trosos at atlas dot cz's post.
it would have helped a lot if you posted an actual code snippet, since the following
<?php
function f(&$a)
{
$a = 10;
}
f($v=3);
var_dump($v);
?>
produced 3 as the contents of $v instead of 10.
if the reference to the variable were passed then the result should have been 10.
or maybe i'm mistaken...`
umbrae at gmail dot com
18-Jan-2007 11:36
`@jeronimo
I don't know why you'd ever want to do that though - you save two lines of code but you have to create a list, create an array, and then junk them at the end. It's a waste of CPU time, and my computations show that it's almost twice as slow as just doing a regular swap. (0.004088 versus 0.008747, 10000 times)
I know it's a major nitpick, but to save one line of code it seems like a waste of time. (No pun intended)`
adam at gmail dot com
25-Aug-2006 10:38
`or you could use the xor-assignment operator..
$a ^= $b;
$b ^= $a;
$a ^= $b;`
bradlis7 at bradlis7 dot com
15-Aug-2005 08:13
`Note whenever you do this
<?php
$a .= $b .= "bla bla";
?>
it comes out to be the same as the following:
<?php
$a .= $b."bla bla";
$b .= "bla bla";
?>
So $a actually becomes $a and the final $b string. I'm sure it's the same with numerical assignments (+=, *=...).`
trosos at atlas dot cz
03-Jul-2004 06:19
`Note that the value of an assignment expression is not the value assigned, but the variable itself (after assign, of course). This allows to do something like this:
<?php
function f(&$a)
{
...
}
f($v=3);
?>`
straz at mac dot nospam dot com
20-Feb-2004 10:18
`This page really ought to have table of assignment operators,
namely,
See the Arithmetic Operators page (http://www.php.net/manual/en/language.operators.arithmetic.php)
Assignment Same as:
$a += $b $a = $a + $b Addition
$a -= $b $a = $a - $b Subtraction
$a *= $b $a = $a * $b Multiplication
$a /= $b $a = $a / $b Division
$a %= $b $a = $a % $b Modulus
See the String Operators page(http://www.php.net/manual/en/language.operators.string.php)
$a .= $b $a = $a . $b Concatenate
See the Bitwise Operators page (http://www.php.net/manual/en/language.operators.bitwise.php)
$a &= $b $a = $a & $b Bitwise And
$a |= $b $a = $a | $b Bitwise Or
$a ^= $b $a = $a ^ $b Bitwise Xor
$a <<= $b $a = $a << $b Left shift
$a >>= $b $a = $a >> $b Right shift`
jeronimo at DELETE_THIS dot transartmedia dot com
28-Jan-2004 07:27
`If you want to swap values between variables without using an intermediary, try using the list() and array() language constructs. For instance:
<?
// Initial values.
$biggest = 1;
$smallest = 10;
// Instead of using a temporary variable...
$temp = $biggest;
$biggest = $smallest;
$smallest = $temp;
// ...Just swap the values.
list($biggest, $smallest) = array($smallest, $biggest);
?>
This works with any number of variables; you're not limited to just swapping two.
Cheers,
Jeronimo`
add a note
Побитовые операторы Арифметические операторы

Last updated: Sat, 27 Jan 2007
show source | credits | stats | sitemap | contact | advertising | mirror sites
Copyright © 2001-2007 The PHP Group
All rights reserved.
This mirror generously provided by: Yahoo! Inc.
Last updated: Sat Mar 10 09:32:46 2007 PST