Скаляры для PHP все на одно лицо. Строки или числа, с плавающей запятой или без. PHP не заморачивается. Ему не нужны строгие рамки типов скаляра.
Платить за эту вольность приходится довольно скоро. Начнем с того, что PHP знает два оператора сложения, в контексте которых он по разному понимает скаляры.
Попробуйте выполнить:
1 2 3 4 |
<?php echo '2' . '3'; // выведет 23 echo '2' + '3'; // выведет 5 ?> |
Возвращаясь к теме статьи, стоит отметить, что иногда нужно прямо указать как воспринимать тот или иной скаляр.
Рассмотрим такой пример:
1 2 3 4 5 |
<?php $s = '1.5abra'; echo $s . '5' + 1; // выведет 2.5 echo (float) $s . '5' + 1; // выведет 2.55 ?> |
Как видите, есть разница.
У нас есть как минимум три способа, чтобы установить тип скаляра.
Прямое указание типа
Мы воспользовались этим методом в предыдущем примере:
1 |
$float = (float) $scalar; |
Функция приведения к типу
Тоже самое, но используя более привычную запись — в виде функции приведения:
1 |
$float = floatval($scalar); |
Использование контекста
Ничего не мешает нам воспользоваться контекстом операций. Ведь PHP не явно выполняет приведение типов.
1 |
$float = $scalar + 0; |