Новые книги

Большой трафик и шестизначное число подписчиков в социальных сетях не гарантируют увеличения доходов вашего бизнеса. Как создать лояльную аудиторию и наладить доверительные отношения с клиентами? И как «конвертировать» их в реальных покупателей? Электронная почта, несмотря на развитие других средств онлайн-маркетинга, по-прежнему остается одним из самых эффективных инструментов.

В этой книге четко и подробно описаны приемы email-маркетинга, с помощью которых вы сможете привлечь значительное число новых и выгодных клиентов и увеличить объем продаж вашей компании.
The first edition of this book started with the words: ‘A modern society could no longer function without the microprocessor.’

This is certainly still true but it is even truer if we include the microcontroller. While the microprocessor is at the heart of our computers, with a great deal of publicity, the microcontroller is quietly running the rest of our world. They share our homes, our vehicles and our workplace, and sing to us from our greetings cards. They are our constant, unseen companions and billions are being installed every year with little or no publicity. The purpose of this book is to give a worry-free introduction to microprocessors and microcontrollers. It starts at the beginning and does not assume any previous knowledge of microprocessors or microcontrollers and, in gentle steps, introduces the knowledge necessary to take those vital first steps into the world of the micro. John Crisp

Трюки с Типами

Учебник РНР
Назад Глава 6. Типы Вперёд

Трюки с типами

PHP не требует (и не поддерживает) явного определения типа при объявлении переменной; тип переменной определяется по контексту, в котором она используется. То есть, если вы присваиваете строковое значение переменной var, var становится строкой. Если вы затем присваиваете переменной var целочисленное значение, она становится целым числом.

Примером автоматической конвертации в PHP является операция сложения '+'. Если любой из операндов float, то все операнды вычисляются как float, и результат также будет float. Если же операнды интерпретируются как целые числа, то и результат будет целочисленным.
Обратите внимание, что при этом НЕ изменяются типы самих операндов; это делается только на этапе вычисления операндов.

$foo = "0";  // $foo это строка (ASCII 48)

$foo += 2;   // теперь $foo это integer (2)
$foo = $foo + 1.3;  // теперь $foo это float (3.3)
$foo = 5 + "10 Little Piggies"; // $foo это integer (15)
$foo = 5 + "10 Small Pigs";     // $foo это integer (15)

Если последние два примера непонятны, см. Конвертация строк.

Если вы хотите форсировать вычисление переменной как имеющей определённый тип, см. раздел Приведение типов. Если вы хотите изменить тип переменной, см. settype().

Если вы хотите протестировать любой из примеров этого раздела, вы можете использовать функцию var_dump().

Примечание: поведение автоматической конвертации для массива в настоящее время не определено.

$a = 1;       // $a это integer
$a[0] = "f";  // $a становится массивом, а $a[0] содержит "f"

Предыдущий пример кажется похожим на следующий, делая $a массивом, первый элемент которого содержит 'f'. Теперь рассмотрим:

$a = "1";     // $a это string
$a[0] = "f";  // Что будет со смещением строки? Что произойдёт?

Поскольку PHP поддерживает индексирование в строках через смещение с использованием того же синтаксиса, что и при индексировании массива, вышеприведённый пример создаст проблему: должна ли $a становиться массивом с первым элементом "f", или "f" должен стать первым символом строки $a?

Исходя из этого, как указано в PHP 3.0.12 и PHP 4.0b3-RC4, результат этой автоматической конвертации рассматривается как неопределённый/undefined. Пути разрешения, однако, обсуждаются.

Приведение типов

Приведение типов в PHP работает так же, как и в C: имя нужного типа записывается в скобках перед переменной, которая к этому новому типу приводится.

$foo = 10;   		// $foo это integer
$bar = (float) $foo;    // $bar это float

Допускаются следующие приведения типов:

  • (int), (integer) - приведение к integer

  • (bool), (boolean) - приведение к boolean

  • (float), (double), (real) - приведение к float

  • (string) - приведение к string

  • (array) - приведение к array

  • (object) - приведение к object

Примечание: вместо приведения переменной к строке, вы можете также заключить переменную в двойные кавычки.

Заметьте, что табуляции и пробелы допускаются внутри скобок, поэтому следующие варианты функционально эквивалентны:

$foo = (int) $bar;
$foo = ( int ) $bar;

Возможно сейчас не очевидно, что происходит при приведении конкретных типов. Дополнительно см. разделы:

При приведении или форсировании конвертации из массива в строку, результатом станет слово Array. При приведении или форсировании конвертации из объекта в строку, результатом станет слово Object.

При приведении скалярной или строковой переменной к массиву, переменная станет первым элементом этого массива:

$var = 'ciao';
$arr = (array) $var;
echo $arr[0];  // выведет 'ciao'

При приведении скалярной или строковой переменной к объекту, переменная станет атрибутом этого объекта; имя атрибута будет 'scalar':

$var = 'ciao';
$obj = (object) $var;
echo $obj->scalar;  // выведет 'ciao'

Назад Оглавление Вперёд
NULL Вверх Переменные