PHP Шпаргалки

Материал из Изи Вики

Операторы

Операторы
Арифметика Сравнение Логические Побитовые
+ сложение === равно && (and) и & и
- вычитание !== не равно || (or) или | или
* умножение < меньше ! отрицание ~ отрицание
/ деление > больше xor искл. или ^ искл. или
% остаток <= меньше или равно << сдвиг влево
** степень >= больше или равно >> сдвиг вправо

Типы данных

Типы данных
Тип Подтип Описание Примеры
bool скалярный булевый тип true, false
int скалярный целые числа 15, 017, 0xf, 0b1111
float скалярный числа с плав. точкой 0.01, 1e-2
string скалярный строки 'abc', "abc"
array смешанный массивы [1,-0.1,'abc'],

array('key' => 'value')

object смешанный объекты new stdClass(),

new class {}

callable смешанный можно в callback function(){},

fn($x) => $x+1

iterable смешанный можно в foreach [1,2],

(function() { yield 1; yield 2; })()

resource специальный внешний ресурс fopen('http://www.google.com', 'r')
NULL специальный нет значения null

Приведение типов

Примеры приведения типов
$v = ... Тип gettype($v) (bool)$v (int)$v (float)$v (string)$v (array)$v (object)$v
null NULL "NULL" false int(0) float(0) "" [ ] { }**
true bool "boolean" true int(1) float(1) "1" [0=>true] {"scalar":true}**
false bool "boolean" false int(0) float(0) "" [0=>false] {"scalar":false}**
0 int "integer" false int(0) float(0) "0" [0=>0] {"scalar":0}**
1 int "integer" true int(1) float(1) "1" [0=>1] {"scalar":1}**
1.99 float "double" true int(1)*** float(1.99) "1.99" [0=>1.99] {"scalar":1.99}**
M_PI float "double" true int(3) float(3.1...) "3.14159..." [0=>3.14159...] {"scalar":3.141...}**
INF float "double" true int(0) float(INF) "INF" [0=>INF] {"scalar":INF}**
NAN float "double" true int(0) float(NAN) "NAN" [0=>NAN] {"scalar":NAN}**
"" string "string" false int(0) float(0) "" [0=>""] {"scalar":""}**
"0" string "string" false int(0) float(0) "0" [0=>"0"] {"scalar":"0"}**
"1" string "string" true int(1) float(1) "1" [0=>"1"] {"scalar":"1"}**
"true" string "string" true int(0) float(0) "true" [0=>"true"] {"scalar":"true"}**
"false" string "string" true int(0) float(0) "false" [0=>"false"] {"scalar":"false"}**
[ ] array "array" false int(0) float(0) "Array" * [ ] { }**
[1,2] array "array" true int(1) float(1) "Array" * [0=>1,1=>2] {"0":1,"1":2}**
["3"=>"a","B",4=>"c"] array "array" true int(1) float(1) "Array" * [3=>"a",4=>"c"] {"3":"a","4":"c"}**
["a"=>"b","b"] array "array" true int(1) float(1) "Array" * ["a"=>"b",0=>"b"] {"a":"b","0":"b"}**
[["a"=>"b"]] array "array" true int(1) float(1) "Array" * [["a"=>"b]] {"0":["a"=>"b"]}**
new stdClass() object "object" true int(1)* float(1)* Fatal error [ ] { }**
Object с методом __toString object "object" true int(1)* float(1)* "из __toString" [поля из объекта] object(SomeClass)
fn($x) => $x+1 callable "object" true int(1)* float(1)* Fatal error [object(Closure)] object(Closure)
(function() { yield ...; })() iterable "object" true int(1)* float(1)* Fatal error [ ] object(Generator)
fopen('xxx', 'r') resource "resource" true int(?) float(?) "Resource id #?" [resource…] {"scalar":resource…}
Примечания: * E_WARNING ** { } - обозначение для object(stdClass) *** округление в меньшую сторону

Объявление типов для строгой типизации

Объявление типов (Type declarations) поддерживается в параметрах функциях, возвращаемых функциями значениях и в свойствах (полях) классов.

В каких версиях PHP добавлен функционал
Что указываем В параметрах

функций

В возвращаемых

значениях

В свойствах

класса

Особенности
Имя класса или

интерфейса

5.0 7.0 7.4
self 5.0 7.0 7.4 Объект текущего класса. Может использоваться только в классах
parent 5.0 7.0 7.4 Объект родительского класса. Может использоваться только в классах
array 5.1 7.0 7.4
callable 5.4 7.0 - Нельзя использовать для свойств класса
bool 7.0 7.0 7.4
float 7.0 7.0 7.4
int 7.0 7.0 7.4
string 7.0 7.0 7.4
iterable 7.1 7.1 7.4 Массив или объект, реализующий интерфейс Traversable
?xxxxx 7.1 7.1 7.4 Значение может быть xxxxx или null
void - 7.1 - Функция ничего не возвращает
object 7.2 7.2 7.4
xx|yy|zz 8.0 8.0 8.0 Объединение типов, должен подходить любой один из указанных
null - - - Добавлен в 8.0. Псевдотип, может использоваться только для объединений xx|yy|null
false - - - Добавлен в 8.0. Псевдотип, может использоваться только для объединений xx|yy|false
mixed 8.0 8.0 8.0 То же самое, что object|resource|array|string|int|float|bool|null
static 8.0 8.0 8.0 Объект текущий класса или любого дочернего
xx&yy&zz 8.1 8.1 8.1 Пересечение типов, все должны подходить. Актуально для названия классов и интерфейсов.
never - 8.1 - Функция может прервать выполнения программы

Примечание: не забудьте добавить в php файл declare(strict_types=1); , если вы используйте подход строгой типизации и не хотите чтобы значения неявно приводились к указанным вами типам.

Гибкое сравнение с помощью ==

Результат выполнения гибкого сравнения с помощью ==
== true 1 '1' '1.0' '1e0' '1.0a' -1 [0] NAN 'abc' '0a' '0' [] "" null 0 false
true true true true true true true true true true true true false false false false false false
1 true true true true true false* false false false false false false false false false false false
'1' true true true true true false false false false false false false false false false false false
'1.0' true true true true true false false false false false false false false false false false false
'1e0' true true true true true false false false false false false false false false false false false
'1.0a' true false* false false false true false false false false false false false false false false false
-1 true false false false false false true false false false false false false false false false false
[0] true false false false false false false true false false false false false false false false false
NAN true false false false false false false false false false false false false false false false false
'abc' true false false false false false false false false true false false false false false false* false
'0a' true false false false false false false false false false true false false false false false* false
'0' false false false false false false false false false false false true false false false true true
[] false false false false false false false false false false false false true false true false true
"" false false false false false false false false false false false false false true true false* true
null false false false false false false false false false false false false true true true true true
0 false false false false false false false false false false* false* true false false* true true true
false false false false false false false false false false false false true true true true true true
* true до PHP 8.0.0.

Тождественное сравнение с помощью ===

Результат выполнения тождественного сравнения с помощью ===
=== 15 017 0xf 0b1111 1.0 1e0 1.0001 1.0…01 NAN INF 1.8e308 1.8e307 "n" 'n' '\n' "\n" array(1) [1]
15 true true true true false false false false false false false false false false false false false false
017 true true true true false false false false false false false false false false false false false false
0xf true true true true false false false false false false false false false false false false false false
0b1111 true true true true false false false false false false false false false false false false false false
1.0 false false false false true true false true false false false false false false false false false false
1e0 false false false false true true false true false false false false false false false false false false
1.0001 false false false false false false true false false false false false false false false false false false
1.0…01 false false false false true true false true false false false false false false false false false false
NAN false false false false false false false false false false false false false false false false false false
INF false false false false false false false false false true true false false false false false false false
1.8e308 false false false false false false false false false true true false false false false false false false
1.8e307 false false false false false false false false false false false true false false false false false false
"n" false false false false false false false false false false false false true true false false false false
'n' false false false false false false false false false false false false true true false false false false
'\n' false false false false false false false false false false false false false false true false false false
"\n" false false false false false false false false false false false false false false false true false false
array(1) false false false false false false false false false false false false false false false false true true
[1] false false false false false false false false false false false false false false false false true true