PHP Cheat Sheet
Classes & Objects
get_class($object) - Возвращает имя класса, к которому принадлежит объект
Параметры:
- $object(object) - объект, имя класс которого мы хотим получить
Пример:
<?php
class foo {
function name()
{
echo "Меня зовут " , get_class($this) , "\n";
}
}
// создание объекта
$bar = new foo();
// внешний вызов
echo "Его имя " , get_class($bar) , "\n";
// внутренний вызов
$bar->name();
?>
Результат
Его имя foo
Меня зовут foo
Files
filesize($path_to_file) - Возвращает размер указанного файла.
Параметры:
- path_to_file (string) - путь к файлу.
Пример:
<?php
// Пример вывода: Размер файла somefile.txt: 1024 байтов
$filename = 'somefile.txt';
echo 'Размер файла ' . $filename . ': ' . filesize($filename) . ' байтов';
?>
Функция форматирования байт до человекопонятного размера
<?php
function human_filesize($bytes, $decimals = 2) {
$sz = 'BKMGTP';
$factor = floor((strlen($bytes) - 1) / 3);
return sprintf("%.f", $bytes / pow(1024, $factor)) . @$sz[$factor];
}
file_exists($file) - Возвращает true, если указанный файл или каталог существует, иначе false
Параметры:
- file (string) - путь к файлу или каталогу.
Пример:
<?php
$filename = '/path/to/foo.txt';
if (file_exists($filename)) {
echo "Файл $filename существует";
} else {
echo "Файл $filename не существует";
}
?>
scandir($path_to_dir, $sorting_order = SCANDIR_SORT_ASCENDING) - Возвращает массив файлов в каталоге. Если каталог не существует, возвращает false
Параметры:
- path_to_dir (string) - путь к каталогу;
- sorting_order (string) - Направление сортировки файлов.
Возможные варианты:
- SCANDIR_SORT_DESCENDING - по убыванию;
- SCANDIR_SORT_NONE - сортирвока не производится
Пример:
Функция для рекурсивного плулчения списка файлов и директорий:
<?php
function dirToArray($dir) {
$result = array();
$cdir = scandir($dir);
foreach ($cdir as $key => $value)
{
if (!in_array($value,array(".","..")))
{
if (is_dir($dir . DIRECTORY_SEPARATOR . $value))
{
$result[$value] = dirToArray($dir . DIRECTORY_SEPARATOR . $value);
}
else
{
$result[] = $value;
}
}
}
return $result;
}
?>
Arrays
array_chunk($array, 2, true) - разбивает массив на части
Параметры:
- $array (array) - входной массив.
- $size (int) - количество частей
- $keys_mode (bool) - сохранять/не сохранять ключи (по умолчанию false)
Пример:
<?php
$input_array = array('a', 'b', 'c');
print_r(array_chunk($input_array, 2));
print_r(array_chunk($input_array, 2, true));
?>
Результат:
Array
(
[0] => Array
(
[0] => a
[1] => b
)
[1] => Array
(
[0] => c
)
)
Array
(
[0] => Array
(
[0] => a
[1] => b
)
[1] => Array
(
[2] => c
)
)
array_column($input, $column_key, $index_key = NULL) - Обходит многомерный массив, ищет указанный ключ и формирует массив из значений по этому ключу
Обходит каждое значение массива $array
, передавая его в callback
-функцию. Если callback-функция возвращает TRUE
, данное значение из $array
возвращается в результирующий $array
. Ключи массива сохраняются.
Параметры:
- $input (array) - многомерный массив или массив объектов;
- $column_key (mixed) - Ключ для поиска значений. Может быть как строка так и число, также и NULL;
- $index_key (string) - Ключ столбца, значения которого будут использоваться в качестве ключей возвращаемого массива.
Пример:
<?php
// Массив, представляющий из себя набор записей полученных из базы данных
$records = array(
array(
'id' => 2135,
'first_name' => 'John',
'last_name' => 'Doe',
),
array(
'id' => 3245,
'first_name' => 'Sally',
'last_name' => 'Smith',
),
array(
'id' => 5342,
'first_name' => 'Jane',
'last_name' => 'Jones',
),
array(
'id' => 5623,
'first_name' => 'Peter',
'last_name' => 'Doe',
)
);
$first_names = array_column($records, 'first_name');
print_r($first_names);
?>
Результат
Array
(
[0] => John
[1] => Sally
[2] => Jane
[3] => Peter
)
array_diff_assoc($array1, $array2) - Вычисляет расхождение массивов с проверкой индекса
Возвращает массив параметров, которые из массива $array2
не совпали с массивом $array1
. Т.е. вторым параметром передаем массив, из которого будут выбраны несовпавшие параметры.
Параметры:
- $array1 (array) - исходный массив;
- $array2 (array) - массив, с котором происходит сравнение.
Пример:
Пример 1
<?php
$array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
$array2 = array("a" => "green", "yellow", "red");
$result = array_diff_assoc($array1, $array2);
print_r($result);
Результат:
Array
(
[b] => brown
[c] => blue
[0] => red
)
Пример 2
<?php
$array1 = ['stocks' => 1, 'bonds' => 0, 'reviews' => 1];
$array2 = ['stocks' => 1, 'bonds' => 1, 'reviews' => 1];
$result = array_diff_assoc($array2, $array1);
print_r($result);
Результат:
Array
(
[bonds] => 1
)
array_filter($array, $function_name, $flag) - фильтрует массив с использованием callback-функции
Обходит каждое значение массива $array
, передавая его в callback
-функцию. Если callback-функция возвращает TRUE
, данное значение из $array
возвращается в результирующий $array
. Ключи массива сохраняются.
Параметры:
- $array (array) - массив для фильтрации;
- $callback (string) - Имя callback-функции;
- $flag (string) - Флаг, определябщий какие аргументы передавать в функцию
ARRAY_FILTER_USE_KEY
- передавать только ключ массива как аргумент дляcallback
вместо значенияARRAY_FILTER_USE_BOTH
- передавать и ключ, и значение вcallback
вместо только значения
По умолчанию 0, что означает, что в
callback
-функцию будет передаваться только значение в качестве единственного аргумента.
Пример:
<?php
function odd($var) {
// является ли переданное число нечетным
return $var & 1;
}
function even($var) {
// является ли переданное число четным
return !($var & 1);
}
$array1 = ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5];
$array2 = [6, 7, 8, 9, 10, 11, 12];
echo "Нечетные:\n";
print_r(array_filter($array1, "odd"));
echo "Четные:\n";
print_r(array_filter($array2, "even"));
?>
Результат:
Нечетные:
Array
(
[a] => 1
[c] => 3
[e] => 5
)
Четные:
Array
(
[0] => 6
[2] => 8
[4] => 10
[6] => 12
)
in_array($var) - Проверяет присутствует ли в массиве значение. Возвращает true если присутствует, false если нет
Параметры:
- $needle (mixed) - искомое значение.
- $haystack (array) - массив, в котором ищем.
Пример:
<?php
$os = array("Mac", "NT", "Irix", "Linux");
if (in_array("Irix", $os)) {
echo "Нашел Irix";
}
if (in_array("mac", $os)) {
echo "Нашел mac";
}
?>
Результат:
Нашел Irix
is_array($var) - Определяет, является ли переменная массивом. Возвращает true если переменная является масссивом, false если нет
Параметры:
- (mixed) $var - проверяемая переменная.
Пример:
<?php
$yes = array('это', 'массив');
echo is_array($yes) ? 'Массив' : 'Не массив';
echo "\n";
$no = 'это строка';
echo is_array($no) ? 'Массив' : 'Не массив';
?>
Результат:
Массив
Не массив
Strings
explode($delimeter, $string, $limit = PHP_MAX_INT) - Разбивает строку с помощью разделителя и помещает в массив
Параметры:
- $delimeter (string) - Разделитель;
- $string (string) - входная строка;
- $limit (int) - лимит результатов. Если указано, то результат будет содержать максимум $limit элементов, при этом остаток будет помещен в последний элемент.
Пример:
<?php
// Пример 1
$pizza = "кусок1 кусок2 кусок3 кусок4 кусок5 кусок6";
$pieces = explode(" ", $pizza);
echo $pieces[0]; // кусок1
echo $pieces[1]; // кусок2
// Пример 2
$data = "foo:*:1023:1000::/home/foo:/bin/sh";
list($user, $pass, $uid, $gid, $gecos, $home, $shell) = explode(":", $data);
echo $user; // foo
echo $pass; // *
?>
strpos($haystack, $needle, $offset) - Возвращает позицию $needle
в $haystack.
Отсчет начинается с 0.
Эта функция в качестве положительного результата может врнуть 0 т.е. если, например, искомое значение находится в самом начале. Поэтому следует производить проверку жестким условием ===
Параметры:
- $haystack (string) - строка, в которой производится поиск;
- $needle (string) - искомая строка;
- $offset (int) - смещение. Если указано то поиск будет производиться с этого места
Пример:
<?php
$mystring = 'abc';
$findme = 'a';
$pos = strpos($mystring, $findme);
// Заметьте, что используется ===. Использование == не даст верного
// результата, так как 'a' находится в нулевой позиции.
if ($pos === false) {
echo "Строка '$findme' не найдена в строке '$mystring'";
} else {
echo "Строка '$findme' найдена в строке '$mystring'";
echo " в позиции $pos";
}
?>
str_replace($needle, $replace, $haystack) - Заменяет указанные символы в строке на желаемые. Возвращает строку или массив с замененными элементами.
Параметры:
- $needle (str, array) - что заменяем. Можно использовать массив;
- $replace (str, array) - на что заменяем. Можно использовать массив;
- $haystack (str, array) - где заменяем. Если используется массив, то будет произведена операция замены над каждым элементом.
Пример:
<?php
// Порядок замены
$str = "Строка 1\nСтрока 2\rСтрока 3\r\nСтрока 4\n";
$order = array("\r\n", "\n", "\r");
$replace = '<br>';
// Обрабатывает сначала \r\n для избежания их повторной замены.
echo $newstr = str_replace($order, $replace, $str);
Результат:
Строка 1<br>Строка 2<br>Строка 3<br>Строка 4<br>
str_split($string, $split_length) - Преобразует строку в массив.
Может принимать как 1 так и 2 параметра. Если передан один параметр то, будет возвращен массив с нулевым индексом и всей строкой в качестве значения
Параметры:
- string (string) - строка для преобразования
- split_length (int) - количество символов в элементе выходного массива
Пример:
<?php
$str = "Hello Friend";
$arr1 = str_split($str);
$arr2 = str_split($str, 3);
print_r($arr1);
print_r($arr2);
?>
Результат:
Array
(
[0] => H
[1] => e
[2] => l
[3] => l
[4] => o
[5] =>
[6] => F
[7] => r
[8] => i
[9] => e
[10] => n
[11] => d
)
Array
(
[0] => Hel
[1] => lo
[2] => Fri
[3] => end
)