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) - Направление сортировки файлов.

    Возможные варианты:

    1. SCANDIR_SORT_DESCENDING - по убыванию;
    2. 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_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) - Заменяет указанные символы в строке на желаемые. Возвращает строку или массив с замененными элементами.

Параметры:

  1. $needle (str, array) - что заменяем. Можно использовать массив;
  2. $replace (str, array) - на что заменяем. Можно использовать массив;
  3. $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
)