PHP.mk документација

Доделување

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

language.operators.assignment.php PHP.net прокси Преводот се освежува
Оригинал на PHP.net
Патека language.operators.assignment.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + превод во позадина Кодовите, табелите и белешките остануваат читливи во истиот тек.
Доделување

Референца за `language.operators.assignment.php` со подобрена типографија и навигација.

language.operators.assignment.php

Оператори за доделување

The basic assignment operator is "=". Your first inclination might be to think of this as "equal to". Don't. It really means that the left operand gets set to the value of the expression on the right (that is, "gets set to").

Основен оператор за доделување е "=". Вашата прва склоност може да биде да мислите на ова како "еднакво на". Немојте. Тоа навистина значи дека левиот операнд се поставува на вредноста на изразот од десната страна (тоа е, "се поставува на").$a = 3Вредноста на изразот за доделување е доделената вредност. Тоа е, вредноста на "

" е 3. Ова ви овозможува да правите некои трик работи:

<?php
$a
= ($b = 4) + 5; // $a is equal to 9 now, and $b has been set to 4.
var_dump($a);
?>

Пример #1 Вгнездени доделувања Покрај основниот оператор за доделување, постојат "комбинирани оператори" за ситебинарни аритметички

, оператори за унија на низи и низи кои ви дозволуваат да користите вредност во израз и потоа да ја поставите нејзината вредност на резултатот од тој израз. На пример:

<?php
$a
= 3;
$a += 5; // sets $a to 8, as if we had said: $a = $a + 5;
$b = "Hello ";
$b .= "There!"; // sets $b to "Hello There!", just like $b = $b . "There!";

var_dump($a, $b);
?>

Пример #2 Комбинирани доделувања

Имајте предвид дека доделувањето ја копира оригиналната променлива во новата (доделување по вредност), така што промените на едната нема да влијаат на другата. Ова може да биде релевантно и ако треба да копирате нешто како голема низа во тесна јамка. objectИсклучок од вообичаеното однесување на доделување по вредност во PHP се случува со clone keyword.

, кои се доделуваат по референца. Објектите може експлицитно да се копираат преку

Доделување по референца$var = &$othervar;Доделувањето по референца исто така е поддржано, користејќи ја синтаксисата "

". Доделувањето по референца значи дека и двете променливи завршуваат со покажување на истите податоци, и ништо не се копира никаде.

<?php
$a
= 3;
$b = &$a; // $b is a reference to $a

print "$a\n"; // prints 3
print "$b\n"; // prints 3

$a = 4; // change $a

print "$a\n"; // prints 4
print "$b\n"; // prints 4 as well, since $b is a reference to $a, which has
// been changed
?>

На new Пример #3 Доделување по референца new операторот враќа референца автоматски, како такво доделување на резултатот од

по референца е грешка.

<?php
class C {}

$o = &new C;
?>

Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред

Parse error: syntax error, unexpected token ";", expecting "("

Пример #4 new Оператор по референца Објаснување на референците делот од прирачникот.

Повеќе информации за референциите и нивните потенцијални употреби може да се најдат во

Пример Еквивалентно Операција
$a += $b $a = $a + $b Собирање
$a -= $b $a = $a - $b Одземање
$a *= $b $a = $a * $b Множење
$a /= $b $a = $a / $b Делење
$a %= $b $a = $a % $b Модул
$a **= $b $a = $a ** $b Експоненцијација

Оператори за битно доделување

Пример Еквивалентно Операција
$a &= $b $a = $a & $b Битно И
$a |= $b $a = $a | $b Битно ИЛИ
$a ^= $b $a = $a ^ $b Битно Ексклузивно ИЛИ
$a <<= $b $a = $a << $b Лево поместување
$a >>= $b $a = $a >> $b Десно поместување

Други оператори за доделување

Пример Еквивалентно Операција
$a .= $b $a = $a . $b Конкатенација на низи
$a ??= $b $a = $a ?? $b Спојување на нула

Белешки од корисници 4 белешки

Петар, Москва
пред 15 години
Using $text .= "additional text"; instead of $text =  $text ."additional text"; can seriously enhance performance due to memory allocation efficiency. 

I reduced execution time from 5 sec to .5 sec (10 times) by simply switching to the first pattern for a loop with 900 iterations over a string $text that reaches 800K by the end.
Роберт Шнајдер
пред 11 години
Be aware of assignments with conditionals. The assignment operator is stronger as 'and', 'or' and 'xor'.

<?php 
$x = true and false;   //$x will be true
$y = (true and false); //$y will be false
?>
Хејли Вотсон
пред 18 години
bradlis7 at bradlis7 dot com's description is a bit confusing. Here it is rephrased.

<?php
$a = 'a';
$b = 'b';

$a .= $b .= "foo";

echo $a,"\n",$b;?>
outputs

abfoo
bfoo

Because the assignment operators are right-associative and evaluate to the result of the assignment
<?php
$a .= $b .= "foo";
?>
is equivalent to
<?php
$a .= ($b .= "foo");
?>
and therefore
<?php
$b .= "foo";
$a .= $b;
?>
Основен оператор за доделување е "=". Вашата прва склоност може да биде да мислите на ова како "еднакво на". Немојте. Тоа навистина значи дека левиот операнд се поставува на вредноста на изразот од десната страна (тоа е, "се поставува на").
пред 10 години
PHP uses a temporary variable for combined assign-operators (unlike JavaScript), therefore the left-hand-side (target) gets evaluated last.

Input:
$a += $b + $c; 

Meaning:
$a = ($b + $c) + $a;

Not:
$a = $a + ($b + $c);

This can be important if the target gets modified inside the expression.

$a = 0;
$a += (++$a) + (++$a); // yields 5 (instead of 4)
На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.