This comprehensive PHP cheat sheet serves as an essential guide for developers of all skill levels, offering quick access to syntax, functions, and best practices. It includes concise examples for key concepts such as variables, operators, arrays, and control structures, making it an invaluable resource for efficient PHP development. Whether you're a beginner looking to learn PHP or an experienced developer seeking a quick reference, this cheat sheet is designed to help streamline your coding workflow.
PHP Basics
Hello World
<?php // begin with a PHP open tag.
echo "Hello World\n";
print("Hello cheatsheets.one");
?>
PHP run command
$ php hello.php
Syntax
<?php
- You need to have the opening tag to start PHP code?>
- Closing tag, only need if you mix PHP code with HTML.- Only variables are case-sensitive (e.g., $message and $MESSAGE are different variables.)
- A statement always ends with a semicolon (
;
). - Whitespace and line breaks don’t matter in PHP.
Variables
$boolean1 = true;
$boolean2 = True;
$int = 12;
$float = 3.1415926;
unset($float); // Delete variable
$str1 = "How are you?";
$str2 = 'Fine, thanks';
See: Types
Strings
$url = "cheatsheets.one";
echo "I'm learning PHP at $url";
// Concatenate strings
echo "I'm learning PHP at " . $url;
$hello = "Hello, ";
$hello .= "World!";
echo $hello; # => Hello, World!
See: Strings
Arrays
$num = [1, 3, 5, 7, 9];
$num[5] = 11;
unset($num[2]); // Delete variable
print_r($num); # => 1 3 7 9 11
echo count($num); # => 5
See: Arrays
Include
vars.php
<?php // begin with a PHP open tag.
$fruit = 'apple';
echo "I was imported";
return 'Anything you like.';
?>
test.php
<?php
include 'vars.php';
echo $fruit . "\n"; # => apple
/* Same as include,
cause an error if cannot be included*/
require 'vars.php';
// Also works
include('vars.php');
require('vars.php');
// Include through HTTP
include 'http://x.com/file.php';
// Include and the return statement
$result = include 'vars.php';
echo $result; # => Anything you like.
?>
Functions
function add($num1, $num2 = 1) {
return $num1 + $num2;
}
echo add(10); # => 11
echo add(10, 5); # => 15
See: Functions
Comments
# This is a one line shell-style comment
// This is a one line c++ style comment
/* This is a multi line comment
yet another line of comment */
Constants
const MY_CONST = "hello";
echo MY_CONST; # => hello
# => MY_CONST is: hello
echo 'MY_CONST is: ' . MY_CONST;
Classes
class Student {
public function __construct($name) {
$this->name = $name;
}
}
$alex = new Student("Alex");
See: Classes
PHP Types
Boolean
$boolean1 = true;
$boolean2 = TRUE;
$boolean3 = false;
$boolean4 = FALSE;
$boolean5 = (boolean) 1; # => true
$boolean6 = (boolean) 0; # => false
Boolean are case-insensitive
Integer
$int1 = 28; # => 28
$int2 = -32; # => -32
$int3 = 012; # => 10 (octal)
$int4 = 0x0F; # => 15 (hex)
$int5 = 0b101; # => 5 (binary)
# => 2000100000 (decimal, PHP 7.4.0)
$int6 = 2_000_100_000;
See also: Integers
Float (Double)
$float1 = 1.234;
$float2 = 1.2e7;
$float3 = 7E-10;
$float4 = 1_234.567; // as of PHP 7.4.0
var_dump($float4); // float(1234.567)
$float5 = 1 + "10.5"; # => 11.5
$float6 = 1 + "-1.3e3"; # => -1299
Null
$a = null;
$b = 'Hello php!';
echo $a ?? 'a is unset'; # => a is unset
echo $b ?? 'b is unset'; # => Hello php
$a = array();
$a == null # => true
$a === null # => false
is_null($a) # => false
Iterables
function bar(): iterable {
return [1, 2, 3];
}
function gen(): iterable {
yield 1;
yield 2;
yield 3;
}
foreach (bar() as $value) {
echo $value; # => 123
}
PHP Strings
String
# => '$String'
$sgl_quotes = '$String';
# => 'This is a $String.'
$dbl_quotes = "This is a $sgl_quotes.";
# => a tab character.
$escaped = "a \t tab character.";
# => a slash and a t: \t
$unescaped = 'a slash and a t: \t';
Multi-line
$str = "foo";
// Uninterpolated multi-liners
$nowdoc = <<<'END'
Multi line string
$str
END;
// Will do string interpolation
$heredoc = <<<END
Multi line
$str
END;
Manipulation
$s = "Hello Phper";
echo strlen($s); # => 11
echo substr($s, 0, 3); # => Hel
echo substr($s, 1); # => ello Phper
echo substr($s, -4, 3);# => hpe
echo strtoupper($s); # => HELLO PHPER
echo strtolower($s); # => hello phper
echo strpos($s, "l"); # => 2
var_dump(strpos($s, "L")); # => false
See: String Functions
PHP Arrays
Defining
$a1 = ["hello", "world", "!"]
$a2 = array("hello", "world", "!");
$a3 = explode(",", "apple,pear,peach");
Mixed int and string keys
$array = array(
"foo" => "bar",
"bar" => "foo",
100 => -100,
-100 => 100,
);
var_dump($array);
Short array syntax
$array = [
"foo" => "bar",
"bar" => "foo",
];
Multi array
$multiArray = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
];
print_r($multiArray[0][0]) # => 1
print_r($multiArray[0][1]) # => 2
print_r($multiArray[0][2]) # => 3
Multi type
$array = array(
"foo" => "bar",
42 => 24,
"multi" => array(
"dim" => array(
"a" => "foo"
)
)
);
# => string(3) "bar"
var_dump($array["foo"]);
# => int(24)
var_dump($array[42]);
# => string(3) "foo"
var_dump($array["multi"]["dim"]["a"]);
manipulation
$arr = array(5 => 1, 12 => 2);
$arr[] = 56; // Append
$arr["x"] = 42; // Add with key
sort($arr); // Sort
unset($arr[5]); // Remove
unset($arr); // Remove all
See: Array Functions
Indexing iteration
$array = array('a', 'b', 'c');
$count = count($array);
for ($i = 0; $i < $count; $i++) {
echo "i:{$i}, v:{$array[$i]}\n";
}
Value iteration
$colors = array('red', 'blue', 'green');
foreach ($colors as $color) {
echo "Do you like $color?\n";
}
Key iteration
$arr = ["foo" => "bar", "bar" => "foo"];
foreach ( $arr as $key => $value )
{
echo "key: " . $key . "\n";
echo "val: {$arr[$key]}\n";
}
Concatenate arrays
$a = [1, 2];
$b = [3, 4];
// PHP 7.4 later
# => [1, 2, 3, 4]
$result = [...$a, ...$b];
Into functions
$array = [1, 2];
function foo(int $a, int $b) {
echo $a; # => 1
echo $b; # => 2
}
foo(...$array);
Splat Operator
function foo($first, ...$other) {
var_dump($first); # => a
var_dump($other); # => ['b', 'c']
}
foo('a', 'b', 'c' /*, ...*/ );
// or
function foo($first, string ...$other){}
PHP Operators
Arithmetic
- | - |
---|---|
+ |
Addition |
- |
Subtraction |
* |
Multiplication |
/ |
Division |
% |
Modulo |
** |
Exponentiation |
Assignment
- | - |
---|---|
a += b |
Same as a = a + b |
a -= b |
Same as a = a – b |
a *= b |
Same as a = a * b |
a /= b |
Same as a = a / b |
a %= b |
Same as a = a % b |
Comparison
- | - |
---|---|
== |
Equal |
=== |
Identical |
!= |
Not equal |
<> |
Not equal |
!== |
Not identical |
< |
Less than |
> |
Greater than |
<= |
Less than or equal |
>= |
Greater than or equal |
<=> |
Less than/equal/greater than |
Logical
- | - |
---|---|
and |
And |
or |
Or |
xor |
Exclusive or |
! |
Not |
&& |
And |
|| |
Or |
Arithmetic
// Arithmetic
$sum = 1 + 1; // 2
$difference = 2 - 1; // 1
$product = 2 * 2; // 4
$quotient = 2 / 1; // 2
// Shorthand arithmetic
$num = 0;
$num += 1; // Increment $num by 1
echo $num++; // Prints 1 (increments after evaluation)
echo ++$num; // Prints 3 (increments before evaluation)
$num /= $float; // Divide and assign the quotient to $num
Bitwise
- | - |
---|---|
& |
And |
| |
Or (inclusive or) |
^ |
Xor (exclusive or) |
~ |
Not |
<< |
Shift left |
>> |
Shift right |
PHP Conditionals
If elseif else
$a = 10;
$b = 20;
if ($a > $b) {
echo "a is bigger than b";
} elseif ($a == $b) {
echo "a is equal to b";
} else {
echo "a is smaller than b";
}
Switch
$x = 0;
switch ($x) {
case '0':
print "it's zero";
break;
case 'two':
case 'three':
// do something
break;
default:
// do something
}
Ternary operator
# => Does
print (false ? 'Not' : 'Does');
$x = false;
# => Does
print($x ?: 'Does');
$a = null;
$b = 'Does print';
# => a is unset
echo $a ?? 'a is unset';
# => print
echo $b ?? 'b is unset';
Match
$statusCode = 500;
$message = match($statusCode) {
200, 300 => null,
400 => 'not found',
500 => 'server error',
default => 'known status code',
};
echo $message; # => server error
See: Match
Match expressions
$age = 23;
$result = match (true) {
$age >= 65 => 'senior',
$age >= 25 => 'adult',
$age >= 18 => 'young adult',
default => 'kid',
};
echo $result; # => young adult
PHP Loops
while
$i = 1;
# => 12345
while ($i <= 5) {
echo $i++;
}
do while
$i = 1;
# => 12345
do {
echo $i++;
} while ($i <= 5);
for i
# => 12345
for ($i = 1; $i <= 5; $i++) {
echo $i;
}
break
# => 123
for ($i = 1; $i <= 5; $i++) {
if ($i === 4) {
break;
}
echo $i;
}
continue
# => 1235
for ($i = 1; $i <= 5; $i++) {
if ($i === 4) {
continue;
}
echo $i;
}
PHP Functions
Returning values
function square($x)
{
return $x * $x;
}
echo square(4); # => 16
Return types
// Basic return type declaration
function sum($a, $b): float {/*...*/}
function get_item(): string {/*...*/}
class C {}
// Returning an object
function getC(): C { return new C; }
Nullable return types
// Available in PHP 7.1
function nullOrString(int $v) : ?string
{
return $v % 2 ? "odd" : null;
}
echo nullOrString(3); # => odd
var_dump(nullOrString(4)); # => NULL
See: Nullable types
Void functions
// Available in PHP 7.1
function voidFunction(): void
{
echo 'Hello';
return;
}
voidFunction(); # => Hello
Variable functions
function bar($arg = '')
{
echo "In bar(); arg: '$arg'.\n";
}
$func = 'bar';
$func('test'); # => In bar(); arg: test
Anonymous functions
$greet = function($name)
{
printf("Hello %s\r\n", $name);
};
$greet('World'); # => Hello World
$greet('PHP'); # => Hello PHP
Recursive functions
function recursion($x)
{
if ($x < 5) {
echo "$x";
recursion($x + 1);
}
}
recursion(1); # => 1234
Default parameters
function coffee($type = "cappuccino")
{
return "Making a cup of $type.\n";
}
# => Making a cup of cappuccino.
echo coffee();
# => Making a cup of .
echo coffee(null);
# => Making a cup of espresso.
echo coffee("espresso");
Arrow Functions
$y = 1;
$fn1 = fn($x) => $x + $y;
// equivalent to using $y by value:
$fn2 = function ($x) use ($y) {
return $x + $y;
};
echo $fn1(5); # => 6
echo $fn2(5); # => 6
PHP Classes
Constructor
class Student {
public function __construct($name) {
$this->name = $name;
}
public function print() {
echo "Name: " . $this->name;
}
}
$alex = new Student("Alex");
$alex->print(); # => Name: Alex
Inheritance
class ExtendClass extends SimpleClass
{
// Redefine the parent method
function displayVar()
{
echo "Extending class\n";
parent::displayVar();
}
}
$extended = new ExtendClass();
$extended->displayVar();
Classes variables
class MyClass
{
const MY_CONST = 'value';
static $staticVar = 'static';
// Visibility
public static $var1 = 'pubs';
// Class only
private static $var2 = 'pris';
// The class and subclasses
protected static $var3 = 'pros';
// The class and subclasses
protected $var6 = 'pro';
// The class only
private $var7 = 'pri';
}
Access statically
echo MyClass::MY_CONST; # => value
echo MyClass::$staticVar; # => static
Magic Methods
class MyClass
{
// Object is treated as a String
public function __toString()
{
return $property;
}
// opposite to __construct()
public function __destruct()
{
print "Destroying";
}
}
Interface
interface Foo
{
public function doSomething();
}
interface Bar
{
public function doSomethingElse();
}
class Cls implements Foo, Bar
{
public function doSomething() {}
public function doSomethingElse() {}
}
Miscellaneous
Basic error handling
try {
// Do something
} catch (Exception $e) {
// Handle exception
} finally {
echo "Always print!";
}
Exception in PHP 8.0
$nullableValue = null;
try {
$value = $nullableValue ?? throw new InvalidArgumentException();
} catch (InvalidArgumentException) { // Variable is optional
// Handle my exception
echo "print me!";
}
Custom exception
class MyException extends Exception {
// do something
}
Usage
try {
$condition = true;
if ($condition) {
throw new MyException('bala');
}
} catch (MyException $e) {
// Handle my exception
}
Nullsafe Operator
// As of PHP 8.0.0, this line:
$result = $repo?->getUser(5)?->name;
// Equivalent to the following code:
if (is_null($repo)) {
$result = null;
} else {
$user = $repository->getUser(5);
if (is_null($user)) {
$result = null;
} else {
$result = $user->name;
}
}
See also: Nullsafe Operator
Regular expressions
$str = "Visit Quickref.me";
echo preg_match("/qu/i", $str); # => 1
See: Regex in PHP
fopen() mode
- | - |
---|---|
r |
Read |
r+ |
Read and write, prepend |
w |
Write, truncate |
w+ |
Read and write, truncate |
a |
Write, append |
a+ |
Read and write, append |
Runtime defined Constants
define("CURRENT_DATE", date('Y-m-d'));
// One possible representation
echo CURRENT_DATE; # => 2021-01-05
# => CURRENT_DATE is: 2021-01-05
echo 'CURRENT_DATE is: ' . CURRENT_DATE;
Useful Tips
Tips
- Use Single Quotes for Strings When You Don't Need Interpolation: PHP allows you to use both single (
'
) and double ("
) quotes for strings. When your string does not require variable interpolation, it's a good practice to use single quotes. This is slightly faster as PHP doesn't have to parse the string for variables. - Leverage PHP Built-in Server for Development: Starting with PHP 5.4.0, you can use PHP's built-in server for development purposes. This is incredibly useful for quickly testing scripts without needing a full server setup. You can start the server using the PHP command line interface (CLI) with
php -S localhost:8000
in your project's root directory. - Array Destructuring for List Assignment: PHP 7.1 introduced array destructuring, which allows you to assign variables from an array using a list-like syntax. This can simplify your code and make it more readable, especially when working with functions that return arrays. For example:
[$first, $second] = explode(',', 'hello,world');
4. Use Null Coalescing Operator for Default Values: The null coalescing operator (??
) is a concise syntax for the common case of needing to use a default value when a variable is null. Instead of usingisset()
, you can write$username = $_GET['user'] ?? 'guest';
to easily assign a default value. - Utilize Composer for Dependency Management: While not directly a PHP language feature, using Composer as a dependency manager for PHP projects can greatly simplify managing libraries and frameworks. Composer helps you declare, manage, and install dependencies of PHP projects, ensuring you have the right versions and simplifying autoloading of classes.