Трюки з типами в PHP

Прикладом автоматичної конвертації PHP є операція складання '+'. Якщо будь-який з операндів float, всі операнди обчислюються як float, і результат також буде float. Якщо ж операнди інтерпретуються як цілі числа, то й результат буде цілим. Зверніть увагу, що при цьому не змінюються типи самих операндів; це робиться лише на етапі обчислення операндів.

Якщо останні два приклади не зрозумілі, див. Конвертація рядків.

Якщо ви хочете форсувати обчислення змінної як певного типу, див. Приведення типів. Якщо потрібно змінити тип змінної, див.settype().

Якщо ви хочете протестувати будь-який приклад цього розділу, ви можете використовувати функціюvar_dump().

Примітка:Поведінка автоматичної конвертації для масиву в даний час не визначена.

Попередній приклад здається схожим на наступний, роблячи масивом $a, перший елемент якого містить 'f'. Тепер розглянемо:

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

Виходячи з цього, як зазначено в PHP 3.0.12 та PHP 4.0b3-RC4, результат цієї автоматичної конвертації розглядається як невизначений/undefined. Шляхи дозволу, однак, обговорюються.

Приведення типів

Приведення типів PHP працює так само, як і в C: ім'я потрібного типу записується в дужках перед змінною, яка до цього нового типу наводиться.

Допускаються такі типи:

  • (int), (integer) - приведення до integer
  • (bool), (boolean) - приведення до boolean
  • (float), (double), (real) - приведення до float
  • (string) - приведення до string
  • (array) - приведення до array
  • (object) – приведення до object

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

Зауважте, що табуляції та прогалини допускаються всередині дужок, тому такі варіанти функціонально еквівалентні:

Можливо, зараз не очевидно, що відбувається під час приведення конкретних типів.

При наведенні або форсуванні конвертації з масиву в рядок результатом стане слово Array. При наведенні або форсуванні конвертації з об'єкта в рядок результатом стане слово Object.

При наведенні скалярної або рядкової змінної масиву, змінна стане першим елементом цього масиву:

При наведенні скалярної або рядкової змінної об'єкта, змінна стане атрибутом цього об'єкта; ім'я атрибуту буде 'scalar':