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.Доделување
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
Доделување
Референца за `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 белешки
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
?>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;
?>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)