Перетворення до рядкового типу в PHP

Матеріал з Вікі ЦДУ
Перейти до: навігація, пошук

Вы можете преобразовывать значения в строковый тип, используя приведение (string), либо функцию strval().

В выражениях, где необходима строка, преобразование происходит автоматически. Это происходит, когда вы используете функции echo или print либо когда вы сравниваете значение переменной со строкой.

Булевое (boolean) значение TRUE преобразуется в строку "1", а значение FALSE представляется как "" (пустая строка). Этим способом вы можете преобразовывать значения в обе стороны - из булева типа в строковый и наоборот.

Целое (<A href="/learnphp/datatypes/?integer" target="_blank">integer</A>) или число с плавающей точкой (<A href="/learnphp/datatypes/?float" target="_blank">float</A>) преобразуется в строку, представленную числом, состоящим из его цифр (включая показатель степени для чисел с плавающей точкой).

Массивы всегда преобразуются в строку "Array", так что вы не можете отобразить содержимое массива (<A href="/learnphp/datatypes/?array" target="_blank">array</A>), используя echo() или print(), чтобы узнать, что он содержит. Чтобы просмотреть один элемент, вам нужно сделать что-то вроде echo $arr['foo'].

Объекты всегда преобразуются в строку "Object". Если вы хотите вывести значение переменной-члена объекта (<A href="/learnphp/datatypes/?object" target="_blank">object</A>) с целью отладки, прочтите следующие абзацы. Если вы хотите получить имя класса требуемого объекта, используйте <A href="/functions/?get_class" target="_blank">get_class()</A>.

Ресурсы всегда преобразуются в строки со структурой "Resource id #1", где 1 - это уникальный номер ресурса (<A href="/learnphp/datatypes/?resource" target="_blank">resource</A>), присвоенный ему PHP во время выполнения. Если вы хотите получить тип ресурса, используйте <A href="/functions/?get_resource_type" target="_blank">get_resource_type()</A>.

<a href="/learnphp/datatypes/?null" target="_blank">NULL</a> всегда преобразуется в пустую строку.

Вывод массивов, объектов или ресурсов не предоставляет вам никакой полезной информации о самих значениях. Более подходящий способ вывода значений для отладки - использовать функции <A href="/functions/?print_r" target="_blank">print_r()</A> и <A href="/functions/?var_dump" target="_blank">var_dump()</A>.

Вы также можете преобразовывать значения PHP в строки для постоянного хранения. Этот метод называется <a href="/learnphp/datatypes/?serialize" target="_blank">сериализацией</a> и может быть выполнен при помощи функции <A href="/functions/?serialize" target="_blank">serialize()</A>. Кроме того, если в вашей установке PHP есть поддержка <A href="/functions/?cat=wddx" target="_blank">WDDX</A>, вы можете сериализовать значения PHP в структуры XML.

<a name="strtoint"></a>Преобразование строк в числа

Если строка распознается как числовое значение, результирующее значение и тип определяется так как показано далее.

Строка будет распознана как <A href="/learnphp/datatypes/?float" target="_blank">float</A>, если она содержит любой из символов '.', 'e', или 'E'. Иначе она будет определена как целое.

Значение определяется по начальной части строки. Если строка начинается с верного числового значения, будет использовано это значение. Иначе значением будет 0 (ноль). Верное числовое значение - это одна или более цифр (могущих содержать десятичную точку), по желанию предваренных знаком, с последующим необязательным показателем степени. Показатель степени - это 'e' или 'E' с последующими одной или более цифрами.

<?php
$foo
= 1 + "10.5"; // $foo это float (11.5)
$foo = 1 + "-1.3e3"; // $foo это float (-1299)
$foo = 1 + "bob-1.3e3"; // $foo это integer (1)
$foo = 1 + "bob3"; // $foo это integer (1)
$foo = 1 + "10 Small Pigs"; // $foo это integer (11)
$foo = 4 + "10.2 Little Piggies"; // $foo это float (14.2)
$foo = "10.0 pigs " + 1; // $foo это float (11)
$foo = "10.0 pigs " + 1.0; // $foo это float (11)
?>

Более подробную информацию об этом преобразовании смотрите в разделе о strtod(3) документации Unix.

Если вы хотите протестировать любой из примеров этого раздела, вы можете скопировать и вставить его и следующую строку, чтобы увидеть, что происходит:

<?php
echo "\$foo==$foo; тип: " . gettype ($foo) . "<br />\n";
?>

Не ожидайте получить код символа, преобразовав его в целое (как вы могли бы сделать, например, в C). Для преобразования символов в их коды и обратно используйте функции <A href="/functions/?ord" target="_blank">ord()</A> и <A href="/functions/?chr" target="_blank">chr()</A>.

Смотрите также: <a href="/learnphp/datatypes/?mn" target="_blank">манипуляции с типами данных</a>


Змінні та типи данних в JavaScript