Това е колекция от въпроси, които се появяват от време на време относно синтаксиса в PHP. Това също така е уики за общността, така че всеки е поканен да участва в поддържането на този списък.
Преди беше трудно да се намерят въпроси за оператори и други синтактични символи.¹
Основната идея е да има връзки към съществуващи въпроси в Stack Overflow, така че да'ни е по-лесно да ги препращаме, а не да копираме съдържание от Ръководството по PHP.
Забележка: От януари 2013 г. Stack Overflow поддържа специални символи. Просто обградете термините за търсене с кавички, например [php] "==" vs "==="
Ако някой ви е посочил тук, защото сте задали такъв въпрос, моля, намерете конкретния синтаксис по-долу. Свързаните страници към PHP manual заедно със свързаните въпроси вероятно ще отговорят на въпроса ви. Ако това е така, ви препоръчваме да увеличите гласа си за отговора. Този списък не е предназначен да замени помощта, предоставена от други хора.
&
Битов оператор или Препратки
=&
Препратки
??
Оператор Null Coalesce (от PHP 7)
?string
?int
?масив
?bool
?float
Декларация за нулируем тип връщане (от PHP 7.1)
:
Алтернативен синтаксис за управляващи структури, Тернарен оператор
=>
Масиви
<=>
Оператори за сравнение (от PHP 7.0)
+=
и -=
Оператори за присвояване
,
Декларации на променливи$$
Променливи
[]
Масиви (кратък синтаксис от PHP 5.4)
$var = []
празен масив...
Разопаковане на аргументи (от PHP 5.6)**
Експонентиране (от PHP 5.6)Оператори за увеличаване/намаляване
Оператор за увеличаване ++
--
Оператор за намаляване
Example Name Effect
---------------------------------------------------------------------
++$a Pre-increment Increments $a by one, then returns $a.
$a++ Post-increment Returns $a, then increments $a by one.
--$a Pre-decrement Decrements $a by one, then returns $a.
$a-- Post-decrement Returns $a, then decrements $a by one.
Те могат да се поставят преди или след променливата.
Ако са поставени преди променливата, операцията за увеличаване/намаляване се извършва първо с променливата **и след това се връща резултатът. Ако се поставят след променливата, първо се връща променливата, а след това се извършва операцията за увеличаване/намаляване.
Например:
$apples = 10;
for ($i = 0; $i < 10; ++$i) {
echo 'I have ' . $apples-- . " apples. I just ate one.\n";
}
В горния случай се използва ++$i
, тъй като е по-бърз. $i++
би довело до същите резултати.
Предварителното увеличаване е малко по-бързо, защото наистина увеличава променливата и след това 'връща' резултата. Post-increment създава специална променлива, копира в нея стойността на първата променлива и едва след като първата променлива бъде използвана, заменя нейната стойност с втората'променлива.
Трябва обаче да използвате $apples--
, тъй като първо искате да покажете текущия брой ябълки, а след това искате да извадите единица от него.
Можете също така да увеличавате букви в PHP:
$i = "a";
while ($i < "c") {
echo $i++;
}
След като достигнете z
, следва aa
и така нататък.
Обърнете внимание, че символните променливи могат да бъдат увеличавани, но не и намалявани, и дори така се поддържат само обикновени ASCII символи (a-z и A-Z).
Постове за препълване на стекове:
Какво е бит? Бит е представяне на 1 или 0. По принцип OFF(0) и ON(1)
Какво е байт? Байтът се състои от 8 бита, а най-високата стойност на байта е 255, което означава, че всеки бит е зададен. Ще разгледаме защо максималната стойност на байта е 255.
-------------------------------------------
| 1 Byte ( 8 bits ) |
-------------------------------------------
|Place Value | 128| 64| 32| 16| 8| 4| 2| 1|
-------------------------------------------
Това представяне на 1 байт
1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 = 255 (1 байт)
&
$a = 9;
$b = 10;
echo $a & $b;
Това ще изведе числото 8. Защо? Ами нека да видим, като използваме примера с нашата таблица.
-------------------------------------------
| 1 Byte ( 8 bits ) |
-------------------------------------------
|Place Value | 128| 64| 32| 16| 8| 4| 2| 1|
-------------------------------------------
| $a | 0| 0| 0| 0| 1| 0| 0| 1|
-------------------------------------------
| $b | 0| 0| 0| 0| 1| 0| 1| 0|
-------------------------------------------
| & | 0| 0| 0| 0| 1| 0| 0| 0|
-------------------------------------------
Както виждате от таблицата, единственият бит, който те споделят, е 8-битовият.
Втори пример
$a = 36;
$b = 103;
echo $a & $b; // This would output the number 36.
$a = 00100100
$b = 01100111
Двата споделени бита са 32 и 4, които, когато се съберат, дават резултат 36.
|
$a = 9;
$b = 10;
echo $a | $b;
Това ще изведе числото 11. Защо?
-------------------------------------------
| 1 Byte ( 8 bits ) |
-------------------------------------------
|Place Value | 128| 64| 32| 16| 8| 4| 2| 1|
-------------------------------------------
| $a | 0| 0| 0| 0| 1| 0| 0| 1|
-------------------------------------------
| $b | 0| 0| 0| 0| 1| 0| 1| 0|
-------------------------------------------
| | | 0| 0| 0| 0| 1| 0| 1| 1|
-------------------------------------------
Ще забележите, че имаме зададени 3 бита в колоните 8, 2 и 1. Съберете ги: 8+2+1=11.
Syntax Name Description
x == y Equality True if x and y have the same key/value pairs
x != y Inequality True if x is not equal to y
x === y Identity True if x and y have the same key/value pairs
in the same order and of the same types
x !== y Non-identity True if x is not identical to y
++ x Pre-increment Increments x by one, then returns x
x ++ Post-increment Returns x, then increments x by one
-- x Pre-decrement Decrements x by one, then returns x
x -- Post-decrement Returns x, then decrements x by one
x and y And True if both x and y are true x=6 y=3
(x < 10 and y > 1) returns true
x && y And True if both x and y are true x=6 y=3
(x < 10 && y > 1) returns true
a . b Concatenation Concatenate two strings: "Hi" . "Ha"