Php функция пустая строка
Если переменная объявлена, но ей изначально не присвоено никакого значения (иначе говоря она не инициализирована), или если переменная вовсе неопределена, то нам будет проблематично ее использовать. Например:
При попытке вывести значение переменной мы получим диагностическое сообщение о том, что переменная не определена:
Warning: Undefined variable $a in C:\localhost\hello.php on line 10
Ситуация может показатся искуственной. Тем не менее нередко переменные в PHP получают некоторые данные извне, например, ввод пользователя. Соответственно возникает необходимость перед использованием данных проверить, что эти данные определены, что они имеются.
Для проверки существования переменной PHP предоставляет ряд встроенных функций.
Оператор isset
Функция isset() позволяет определить, инициализирована ли переменная или нет. Если переменная определена, то isset() возвращает значение true . Если переменная не определена, то isset() возвращает false . Также если переменная имеет значение null функция isset() также возвращает false .
Здесь переменная $message не инициализирована, поэтому выражение isset($message) будет возвращать значение false .
переменная message не определена
Теперь пусть переменная $message имеет начальное значение:
$message = "Hello PHP"; if(isset($message)) echo $message; else echo "переменная message не определена";
В этом случае выражение isset($message) будет возвращать true , поэтому будет выполняться инструкция echo $message :
Однако если переменной присвоено начальное значение null , то опять же будет считаться, что эта переменная не установлена:
$message = null; if(isset($message)) echo $message; else echo "переменная message не определена";
переменная message не определена
empty
Функция empty() проверяет переменную на «пустоту». «Пустая» переменная — это переменная, значение которой равно null , 0, false или пустой строке — в этом случае функция empty() возвращает true :
Здесь переменная $message хранит пустую строку, поэтому выражение empty($message) возвратит true .
переменная message не определена
При этом если строка содержит даже хотя бы один пробел и больше ничего ( $message = » » ), то такая строка уже не считается пустой.
unset
С помощью функции unset() мы можем уничтожить переменную:
Но, как правило, необходимость в подобном удалении переменной возникает редко, так как PHP автоматически удаляет переменные, когда завершается выполнение контекста (например, функции), в котором определены эти переменные.
empty
Determine whether a variable is considered to be empty. A variable is considered empty if it does not exist or if its value equals false . empty() does not generate a warning if the variable does not exist.
Parameters
No warning is generated if the variable does not exist. That means empty() is essentially the concise equivalent to !isset($var) || $var == false.
Return Values
Returns true if var does not exist or has a value that is empty or equal to zero, aka falsey, see conversion to boolean. Otherwise returns false .
Examples
Example #1 A simple empty() / isset() comparison.
// Evaluates to true because $var is empty
if (empty( $var )) echo ‘$var is either 0, empty, or not set at all’ ;
>
// Evaluates as true because $var is set
if (isset( $var )) echo ‘$var is set even though it is empty’ ;
>
?>
Example #2 empty() on String Offsets
$expected_array_got_string = ‘somestring’ ;
var_dump (empty( $expected_array_got_string [ ‘some_key’ ]));
var_dump (empty( $expected_array_got_string [ 0 ]));
var_dump (empty( $expected_array_got_string [ ‘0’ ]));
var_dump (empty( $expected_array_got_string [ 0.5 ]));
var_dump (empty( $expected_array_got_string [ ‘0.5’ ]));
var_dump (empty( $expected_array_got_string [ ‘0 Mostel’ ]));
?>?php
The above example will output:
bool(true) bool(false) bool(false) bool(false) bool(true) bool(true)
Notes
Note: Because this is a language construct and not a function, it cannot be called using variable functions, or named arguments.
Note:
When using empty() on inaccessible object properties, the __isset() overloading method will be called, if declared.
See Also
- isset() — Determine if a variable is declared and is different than null
- __isset()
- unset() — Unset a given variable
- array_key_exists() — Checks if the given key or index exists in the array
- count() — Counts all elements in an array or in a Countable object
- strlen() — Get string length
- The type comparison tables
User Contributed Notes 36 notes
$testCase = array(
1 => » ,
2 => «» ,
3 => null ,
4 => array(),
5 => FALSE ,
6 => NULL ,
7 => ‘0’ ,
8 => 0 ,
foreach ( $testCase as $k => $v ) if (empty( $v )) echo »
$k => $v is empty» ;
>
>
/**
Output
1=> is empty
2=> is empty
3=> is empty
4=>Array is empty
5=> is empty
6=> is empty
7=>0 is empty
8=>0 is empty
**/
?>
Please note that results of empty() when called on non-existing / non-public variables of a class are a bit confusing if using magic method __get (as previously mentioned by nahpeps at gmx dot de). Consider this example:
class Registry
protected $_items = array();
public function __set ( $key , $value )
$this -> _items [ $key ] = $value ;
>
public function __get ( $key )
if (isset( $this -> _items [ $key ])) return $this -> _items [ $key ];
> else return null ;
>
>
>
$registry = new Registry ();
$registry -> empty = » ;
$registry -> notEmpty = ‘not empty’ ;
var_dump (empty( $registry -> notExisting )); // true, so far so good
var_dump (empty( $registry -> empty )); // true, so far so good
var_dump (empty( $registry -> notEmpty )); // true, .. say what?
$tmp = $registry -> notEmpty ;
var_dump (empty( $tmp )); // false as expected
?>
The result for empty($registry->notEmpty) is a bit unexpeced as the value is obviously set and non-empty. This is due to the fact that the empty() function uses __isset() magic functin in these cases. Although it’s noted in the documentation above, I think it’s worth mentioning in more detail as the behaviour is not straightforward. In order to achieve desired (expexted?) results, you need to add __isset() magic function to your class:
class Registry
protected $_items = array();
public function __set ( $key , $value )
$this -> _items [ $key ] = $value ;
>
public function __get ( $key )
if (isset( $this -> _items [ $key ])) return $this -> _items [ $key ];
> else return null ;
>
>
public function __isset ( $key )
if (isset( $this -> _items [ $key ])) return ( false === empty( $this -> _items [ $key ]));
> else return null ;
>
>
>
$registry = new Registry ();
$registry -> empty = » ;
$registry -> notEmpty = ‘not empty’ ;
var_dump (empty( $registry -> notExisting )); // true, so far so good
var_dump (empty( $registry -> empty )); // true, so far so good
var_dump (empty( $registry -> notEmpty )); // false, finally!
?>
It actually seems that empty() is returning negation of the __isset() magic function result, hence the negation of the empty() result in the __isset() function above.
empty
Проверяет, считается ли переменная пустой. Переменная считается пустой, если она не существует или её значение равно FALSE . empty() не генерирует предупреждение если переменная не существует.
Список параметров
Замечание:
До PHP 5.5 empty() проверяет только переменные, и попытка проверить что-то еще вызовет ошибку синтаксиса. Другими словами, следующий код не будет работать: empty(trim($name)). Используйте вместо него trim($name) == false.
Если переменная не существует, предупреждение не генерируется. Это значит, что empty() фактически является точным эквивалентом конструкции !isset($var) || $var == false
Возвращаемые значения
Возвращает FALSE , если var существует, и содержит непустое и ненулевое значение. В противном случае возвращает TRUE .
- «» (пустая строка)
- 0 (целое число)
- 0.0 (дробное число)
- «0» (строка)
- NULL
- FALSE
- array() (пустой массив)
- $var; (переменная объявлена, но не имеет значения)
Список изменений
empty() теперь поддерживает выражения, а не только переменные.
Проверка нечислового индекса строки возвращает TRUE .
Примеры
Пример #1 Простое сравнение empty() и isset() .
// Принимает значение true, потому что $var пусто
if (empty( $var )) echo ‘$var или 0, или пусто, или вообще не определена’ ;
>
// Принимает значение true, потому что $var определена
if (isset( $var )) echo ‘$var определена, даже если она пустая’ ;
>
?>
Пример #2 empty() и строковые индексы
В PHP 5.4 был изменен способ обработки строковых индексов в empty() .
$expected_array_got_string = ‘somestring’ ;
var_dump (empty( $expected_array_got_string [ ‘some_key’ ]));
var_dump (empty( $expected_array_got_string [ 0 ]));
var_dump (empty( $expected_array_got_string [ ‘0’ ]));
var_dump (empty( $expected_array_got_string [ 0.5 ]));
var_dump (empty( $expected_array_got_string [ ‘0.5’ ]));
var_dump (empty( $expected_array_got_string [ ‘0 Mostel’ ]));
?>?php
Результат выполнения данного примера в PHP 5.3:
bool(false) bool(false) bool(false) bool(false) bool(false) bool(false)
Результат выполнения данного примера в PHP 5.4:
bool(true) bool(false) bool(false) bool(false) bool(true) bool(true)
Примечания
Замечание: Поскольку это языковая конструкция, а не функция, она не может вызываться при помощи переменных функций.
Замечание:
При использовании функции empty() на недоступных (необъявленных) свойствах объекта будет вызван встроенный метод объекта __isset(), если он определен.
Смотрите также
- isset() — Определяет, была ли установлена переменная значением отличным от NULL
- __isset()
- unset() — Удаляет переменную
- array_key_exists() — Проверяет, присутствует ли в массиве указанный ключ или индекс
- count() — Подсчитывает количество элементов массива или что-то в объекте
- strlen() — Возвращает длину строки
- Таблица сравнения типов
empty
Определите, считается ли переменная пустой. Переменная считается пустой, если она не существует или если ее значение равно false . empty () не генерирует предупреждение, если переменная не существует.
Parameters
Предупреждение не генерируется, если переменная не существует. Это означает, что empty () по сути является кратким эквивалентом ! Isset ($ var) || $ var == false .
Return Values
Возвращает true , если var не существует или имеет пустое или равное нулю значение, иначе falsey, см. преобразование в boolean . В противном случае возвращает false .
Examples
Пример №1 Простое сравнение empty () / isset () .
$var = 0; // Evaluates to true because $var is empty if (empty($var)) < echo '$var is either 0, empty, or not set at all'; > // Evaluates as true because $var is set if (isset($var)) < echo '$var is set even though it is empty'; > ?>
Пример # 2 empty () для смещений строк
$expected_array_got_string = 'somestring'; var_dump(empty($expected_array_got_string['some_key'])); var_dump(empty($expected_array_got_string[0])); var_dump(empty($expected_array_got_string['0'])); var_dump(empty($expected_array_got_string[0.5])); var_dump(empty($expected_array_got_string['0.5'])); var_dump(empty($expected_array_got_string['0 Mostel'])); ?>
Выводится приведенный выше пример:
bool(true) bool(false) bool(false) bool(false) bool(true) bool(true)
Notes
Примечание . Поскольку это языковая конструкция, а не функция, ее нельзя вызывать с помощью переменных функций или именованных аргументов .
Note:
При использовании empty () для недоступных свойств объекта будет вызван метод перегрузки __isset () , если он объявлен.
See Also
- isset () — определяет, объявлена ли переменная и отличается от нуля
- __isset()
- unset () — Сбросить заданную переменную
- array_key_exists () — Проверяет, существует ли данный ключ или индекс в массиве
- count () — подсчитывает все элементы в массиве или в объекте Countable
- strlen () — получает длину строки
- Типовые сравнительные таблицы
PHP 8.2
(PECL eio 0.0.1dev)eio_write to file eio_write()записывает до длины байта из строки со смещением в начало файла.
(PHP 5 5.3.0,7,8,PECL enchant 0.1.0)enchant_broker_describe Enumerates Enumerates Enumerates Enchant providers and tells you some rudimentary