Основы php, заметки
типы в PHP
Скалярные:
boolean (true
вернет 1
, false
вернет ‘’
- пустую строку ), integer, float(число с плавающей точкой),string(строка)
Смешанные
Array
, object
Специальные
resourse
, null
(NULL
, варианты: переменной присвоена константа NULL
, переменной еще не было присвоено какое-либо значение, переменная была удалена с помощью функции unset()
)
Ошибки PHP
PHP
error_reporting(0); // отключаем вывод всех ошибок
error_reporting(E_ALL); // включаем
echo
echo
можно использовать так:
PHP
echo ‛hello, ‛,‛Ваня ‛, $per;
// запятая здесь равнозначна конструкции echo ;
Короткая запись echo
:
PHP
<?=$name?>
Но должен быть включен short open tag
Операторы сравнения
Пример | Название |
---|---|
$a == $b |
Равно |
$a === $b |
Тождественно равно |
$a != $b |
Не равно |
$a <> $b |
Не равно |
$a !== $b |
Тождественно не равно |
$a < $b |
Меньше |
$a > $b |
Больше |
$a <= $b |
Меньше или равно |
$a >= $b |
Больше или равно |
Неочевидный синтаксис PHP
Экранирование переменных:
PHP
echo ‛сюда пришли какие-то {$people}s ‛;
Получаем первый символ строки:
PHP
$str = ‛Привет, мир‛;
$first = $str{0}; echo $first; // П
Echo $str{1}; // р
Второй путь получить первый (и не только) символ строки:
$str = 'Привет, мир';
$first = $str[0];
echo $first; // П
Целочисленный остаток от деления:
PHP
$a= 5; $b =2;
$c = $a % $b;
Echo $c; // 1
PHP
$a += $b; // эквивалентно $a = $a + $b;
Простые полезные функции PHP
PHP
Isset(имя_переменной); //возвращает true или false
Empty(имя_переменной); //см. Таблицу
gettype(имя_переменной); // получаем тип переменной в виде строки (NULL, integer, string, double (это float),boolean)
settype(имя_переменной, «тип»); //конвертируем переменную в нужный тип данных
(тип) имя_переменной; // Приведение переменной к типу
Сравнение типов и результатов функций
Выражение | gettype() | empty() | is_null() | isset() | логическое if($x) |
---|---|---|---|---|---|
$x = ""; | строка | TRUE | FALSE | TRUE | FALSE |
$x = NULL | NULL | TRUE | TRUE | FALSE | FALSE |
$x неопределена | NULL | TRUE | TRUE | FALSE | FALSE |
$x = array(); | массив | TRUE | FALSE | TRUE | FALSE |
$x = false; | логич. | TRUE | FALSE | TRUE | FALSE |
$x = true; | логич. | FALSE | FALSE | TRUE | TRUE |
$x = 1; | целое | FALSE | FALSE | TRUE | TRUE |
$x = 12; | целое | FALSE | FALSE | TRUE | TRUE |
$x = 0; | целое | TRUE | FALSE | TRUE | FALSE |
$x = -1; | целое | FALSE | FALSE | TRUE | TRUE |
$x = "1"; | строка | FALSE | FALSE | TRUE | TRUE |
$x = "0"; | строка | TRUE | FALSE | TRUE | FALSE |
$x = "-1"; | строка | FALSE | FALSE | TRUE | TRUE |
$x = "you"; | строка | FALSE | FALSE | TRUE | TRUE |
$x = "true"; | строка | FALSE | FALSE | TRUE | TRUE |
$x = "false"; | строка | FALSE | FALSE | TRUE | TRUE |
Тернарный оператор PHP
PHP
echo $name=="John" ? "Johnson" : "Bad";
// Bad
Лучше всего понять на простом примере: если переменной name
присвоено значение John
, то выводится фамилия Johnson
, иначе Bad
.
Альтернативный синтаксис для if
, else
, elseif
PHP
switch
PHP
switch ($i) {
case 0:
echo "i = 0";
break;
case 1:
echo "i = 1";
break;
case 2:
echo "i = 2";
break;
default:
echo "i != 0, 1 или 2";
}
Получаем значение любой директивы из php.ini
PHP
ini_get(‛имя_директивы‛);
echo ini_get("post_max_size"); // 8M
Массивы php
Создание массива - функция array
:
PHP
$arr = array();
$arr = array('John',
'Bob'
);
$arr = array(1=>'John',
2=>'Bob'
);
$arr = array('name'=>'John',
'family'=>'Bob'
);
Число элементов в массива - функция count
:
PHP
count($arr);
Выводим адекватную структуру массива - функция prinr_r
:
PHP
echo "<pre>";
prinr_r($arr);
echo "</pre>";
Выводим ПОДРОБНУЮ структуру массива - функция var_dump
:
PHP
echo "<pre>";
var_dump($arr);
echo "</pre>";
Многомерный массив: Многомерный массив PHP Вывод при помощи FOREACH
Полезные функции при работе с массивами PHP
PHP
echo current($arr);
//Функция current() возвращает значение элемента массива, на который указывает его внутренний указатель
echo next($arr);
//next — Передвигает внутренний указатель массива на одну позицию вперёд
echo prev($arr);
//prev — Передвигает внутренний указатель массива на одну позицию назад
echo end($arr);
//end — Передвигает внутренний указатель массива к последнему элементу массива
echo reset($arr);
//reset — Передвигает внутренний указатель массива к первому элементу массива
key($arr);
// получаем ключ того элемента массива, на который в данный момент указывает внутренний указатель массива
Константы PHP
PHP
define('имя_константы','значение');
define('CIFRA',8888);
echo CIFRA; //8888
defined('CIFRA'); // проверка константы, возвратит true, если константа существует
echo defined('CIFRA'); //1
Принято обозначать большими буквами. Константы, как правило, неизменны (нельзя поменять через присваивание,
нельзя удалить через функцию unset()
).
Константы нельзя использовать, в отличие от переменных, в двойных кавычках; в этом случае используйте конкатенацию.
Псевдо константы PHP
Псевдо константы – имя зашито, а значение может меняться. Имя начинается и заканчивается с двойного подчеркивания.
PHP
echo __LINE__;
// Пседо константа __LINE__ вернет номер текущей строки (для кода)
// __FILE__ вернет полный пыть к файлу
// __FUNCTION__ вернет имя функции
Встроенные константы PHP
PHP
echo PHP_VERSION;
// вернет версию PHP
// PHP_CONFIG_FILE_PATH путь к php.ini
Предопределенные переменные
PHP
$GLOBALS //Массив, содержащий все переменныеиз глобального диапазона
$_ENV //Массив переменных среды, существовавших при запуске сценария
$_COOKIE //Массив файлов cookie отправленных с браузера на сервер
$_GET //Массив, содержащий значения всех полей, переданных методом GET
$_POST //Массив, содержащий значения всех полей, переданных методом POST
$_FILES //Массив, содержащий всю информацию о загруженных файлах
$_REQUEST //Массив, содержащий переменные
_GET, _POST, _COOKIES и _FILES
$_SESSION //Массив переменных размещенных во встроенных сеансах РНР
Инкремент и декремент
++
увеличиваем значение переменной на 1;
--
уменьшаем значение переменной на 1;
PRE инкремент и декремент | |
---|---|
++$a;
|
увеличивает $a на 1 и возвращает $a
|
--$a;
|
уменьшает $a на 1 и возвращает $a
|
POST инкремент и декремент | |
---|---|
$a++;
|
возвращает значение $a и лишь затем увеличивает $a на 1
|
$a--;
|
возвращает значение $a и лишь затем уменьшает $a на 1
|
Циклы PHP
Цикл for
PHP
for
(
как правило здесь инициал-ся счетчик;
проверяем на истину( можно сказать,"if");
как правило, меняем счетчик
)
{
код;
}
//--------------------------------------
for( $i = 1; $i <= 5; $i += 1 )
{
echo $i."<br/>";
}
//1
//2
//3
//4
//5
Цикл while
PHP
while(условие)
{
}
//--------------------------------------
$i = 0; $a = 0;
while($i <= 5)
{
$i++;
$a += $i; echo $a."<br/>" ;
}
//1
//3
//6
//10
//15
//21
break
break
- оператор break "выбрасывает" нас из цикла
continue
continue
- оператор continue "выбрасывает" нас из цикла к УСЛОВИЮ
Цикл do...while
В отличие от цикла while
, цикл do while
будет выполнен всегда хотя бы один раз
Цикл foreach
PHP
foreach(массив as какая-нить переменная(сами придумываете)){
// при каждой итерации будет браться значение из 'ячеек' массива и оно
// (значение) будет закидываться в 'какая-нить переменная'
}
foreach($arr as $a){
echo $a;
}
//------------------------
foreach(массив as КЛЮЧ(сами придумываете) => какая-нить переменная(сами придумываете)){
// при каждой итерации будет браться значение из 'ячеек' массива и оно
// (значение) будет закидываться в 'какая-нить переменная'
}
foreach($arr as $key => $a){
echo $key."=".$a;
}
Полезные нюансы при работе с функциями PHP
PHP
function_exists(function_name); // проверяем, существует ли функция
// если ф-я есть вернется true
function hello(){ echo "Hello";}
$v = 'hello';
$v(); // что равнозначно вызову ф-и hello();
//в ф-ю должны передаваться сначала обязательные аргументы, а потом необязательные
// и никак иначе
function test($a,$b,$c=10) {}
test(12,13); // необязательный опущен
// результат функции можно возвратить при помощи оператора return
function summa($a,$b) { return $a + $b; }
$res = summa(10,10);
echo $res; //20
Получаем список всех доступных функций (некоторые функции можно использовать лишь подключив необходимое расширение).
PHP
echo "<pre>";
print_r(get_defined_functions());
echo "</pre>";
В своих функциях лучше всего что-то возвращать (например, true
или false
): так мы всегда сможем проверить правильность работы функции.
ПЕРЕМЕННЫЕ
PHP
$age = 10; // в любой функции (в локальной области видимости)
//к этой переменной можно обратиться двумя способами: $CLOBALS['age'] или global $age
//любая переменная созданная в глоб. области видимости является глобальной то есть:
$age = 10000;
function getN(){ echo $GLOBALS['age']; } // 10000
$CLOBALS['age'] = 10;
//глобальную переменную (будет доступна и в функции, даже если не передать ее как параметр) можно объявить так:
global $age;
// все наши глобальные переменные (созданные на верхнем уровне)
// лежат в массиве GLOBALS
function test() {
$a = 0; // это локальная переменная, живет пока работает ф-я
echo $a++;
}
test(); // 0
test(); // 0
function test() {
static $a = 0; // это статическая переменная, и компилятор не будет ее удалять после завершения работы функции
echo $a++;
}
test(); // 0
test(); // 1
test(); // 2
Ссылки PHP
PHP
$a = 8;
$b = &a; // $b является ссылкой на переменную $a
Встроенные функции PHP
Документация PHP: www.php.net/docs.php
Часто используемые функции для работы с ПЕРЕМЕННЫМИ:
PHP
is_float(expr)
is_integer(expr)
is_numeric(expr)
is_string(expr)
is_null(expr)
is_array(expr)
is_bool(expr)
intval(expr [, int base]) //Возвращает целочисленное значение аргумента.
floatval(expr) //Возвращает вещественное значение аргумента.
Часто используемые МАТЕМАТИЧЕСКИЕ функции в PHP:
PHP
max // Возвращает наибольшее число из заданых.
acos // Возвращает значение арккосинуса значения.
cos // Возвращает косинус числа в радианах.
min // Возвращает наименьшее число из заданых.
decbin // Возвращает двоичное представление целого числа.
log // Возвращает натуральный логарифм значения.
pi // Возвращает приблизительное число пи.
rad2deg // Возвращает в градусах значение аргумента заданного в радианах.
round // Возвращает округленное до ближайшего целого числа значение заданное аргументом.
sqrt // Извлечение квадратного корня из числа.
rand // Возвращает число, лежащее между двумя необязательными аргументами включительно.
Часто используемые функции для обработки СТРОК в PHP:
PHP
addslashes // Экранирует спецсимволы в строке.
stripslashes // Разэкранирует спецсимволы в строке.
explode // Разбивает строку на подстроки.
htmlentities // Преобразует символы в соответствующие HTML сущности.
trim // Удаляет пробелы из начала и конца строки.
str_replace // Заменяет строку поиска на строку замены.
strip_tags // Удаляет HTML и PHP тэги из строки.
strlen // Возвращает длину строки.
strpos // Возвращает позицию первого вхождения подстроки.
strstr // Находит первое вхождение подстроки.
substr // Возвращает подстроку
nl2br // Вставляет HTML код разрыва строки перед каждым переводом строки
Часто используемые функции при работе с МАССИВАМИ в PHP:
PHP
array_pop // Извлечь последний элемент массива.
array_shift // Извлечь первый элемент массива.
array_rand // Выбрать одно или несколько случайных значений из массива.
array_reverse // Возвращает массив с элементами в обратном порядке.
count // Посчитать количество элементов массива или количество свойств объекта.
in_array // Проверить, присутствует ли в массиве значение.
array_key_exists // Проверить, присутствует ли в массиве ключ.
implode // Объединить элементы массива в строку.
Читаем описание функции на примере php.net
Существуют так называемые языковые конструкции, это не функции, например, echo
и print
. Языковые конструкции никогда ничего не возвращают, за одним исключением, языковая конструкция print
возвращает 1. Для языковой конструкции можно не использовать круглые скобки.
Определение функции на примере функции PHP isset
:
isset
— Определяет, была ли установлена переменная значением отличным от NULL
(PHP 4, PHP 5) – на php.net расположено справа от определения функции и обозначает в каких версиях PHP встречается функция.
Описание функции PHP на примере функции isset
:
PHP
bool isset ( mixed $var [, mixed $... ] )
// квадратные скобки указывают на необязательность параметра
// слова, стоящие переда параметрами, это ожидаемые типы
// mixed - это псевдотип (такого типа нет), то есть можно передать больше чем один тип
// перед именем функции стоит тип, то есть, что возвращает функция
Список параметров
Здесь располагается подробное описание (не всегда) передаваемых параметров.
Возвращаемые значения
Здесь располагается подробное описание того (не всегда), что возвращает функция.
Функция header
, отправляем заголовки браузеру,примеры
header()
используется для отправки заголовков HTTP в браузер. Помните, что функцию header()
можно вызывать только если клиенту еще не передавались данные. То есть она должна идти первой в выводе, перед ее вызовом не должно быть никаких HTML тэгов, пустых строк и т.п.
Статья по теме: Протокол HTTP (hypertext transfer protocol)
PHP
header("Location: test.php"); // перенаправляем пользователя на test.php
PHP
header("Refresh: 100"); // перезагрузить страницу через каждые 100 секунд
header("Refresh: 100; url=// перенаправляем пользователя на dnzl.ru через 100 секунд
// аналог Location, но с задержкой
header("Content-type: text/xml"); // принудительно устанавливаем тип контента (файла)
header("Content-type: text/xml;
charset=utf-8"); // отдаем с кодировкой
Кэширование PHP
Header
: Cache-Control
и Expires
Заголовки Cache-Control
для кэширования, а Expires
задает дату (на сколько кэшировать).
Кэшировать надо не только страницы, но и запросы.
PHP
header("Cache-Control: no-cache");
// no-cache - это не запрет кэширования
//(хотя теоретически большинство браузеров не закэшируют требуемую страницу,
// но только в том случае, если пользователь закроет страницу);
// а вот при обновлении (запросы) страница кэшироваться не будет
// этим мы как бы говорим браузеру:
// перед тем как поднять контент из кэша, проверь - не обновилась ли страница,
// если страница не измелась, то страница поднимется из кэша,
// соответственно, при запросе страница поднимется из кэша
// ЗАПРЕТ НА КЭШИРОВАНИЕ:
header("Cache-Control: no-store");
//или
header("Cache-Control: no-store, no-cache,must-revalidate");
header("Expires:" . date("r"));
//Разрешение (хотя браузеры и так кэшируют)
header("Cache-Control: public");
header("Expires:" . date("r",time()+3600));
Работа с сессиями PHP
Куки php, cookie
Работа с файлами в PHP
Работа с директориями в PHP
PHP
//Создание директории
mkdir(string dirname[, int mode]) // !0777 (0777 - всем все можно)
//Удаление директории
rmdir(string dirname) // только пустая!
// Последовательно при работе с директориями:
$dir = opendir(string dirname) // Открываем директорию
$name = readdir($dir) // Читаем директорию
closedir($dir) // Закрываем директорию
is_file(name) // Это файл?
is_dir(name) // Это директория?
scandir(string dirname [, int order]) // Сканируем директорию
// Вернет массив того, что есть в директории
Комментарии к статье