This article has been localized into Russian by the community.
Работаем с числами
В этом параграфе мы поработаем с числами. Как упоминалось ранее, в PHP есть два разных типа данных, связанных с числами: integer (целые) и float (числа с плавающей запятой). Целые соответствуют "круглым" числам, без дробной части, а числа с плавающей запятой содержат и дробную часть. В большинстве случаев вполне подойдут целые числа, кроме того, они работают быстрее и проще.
Давайте попробуем некоторые простые вычисления, чтобы показать насколько проста математика с PHP. Вот пара примеров.
<?php
$number1 = 6;
$number2 = 2;
echo "Addition: " . ($number1 + $number2);
echo "<br /><br />";
echo "Substraction: " . ($number1 - $number2);
echo "<br /><br />";
echo "Multiplication: " . ($number1 * $number2);
echo "<br /><br />";
echo "Division: " . ($number1 / $number2);
echo "<br /><br />";
?>
Это настолько просто! Арифметика в PHP - это как считать на калькуляторе. Но что насчет чисел, которые поступают из внешнего мира, например, из заполненной формы? Мы погрузимся в эту тему в следующем параграфе, и один из приемов, которым мы воспользуемся, - это проверить, содержит ли переменная число, которое можно использовать для расчетов. Нам поможет функция is_numeric(). Она проверяет, является ли переменная целом числом, или можно ли ее преобразовать к числу. Например, "42" можно преобразовать к числу 42, а вот с "Hello World" это не удастся. is_numeric возвращает true в первом случае, и false во втором. Вот пример:
<?php
$number1 = "10";
$number2 = 20;
if((is_numeric($number1)) && (is_numeric($number2)))
echo "Result: " . ($number1 + $number2);
else
echo "Both variables have to be numbers!";
?>
Теперь, попробуйте заменить "10" на слово или предложение, например, "Hello world". Вы увидите, что условие не выполнится, и выведется предупреждение. Это бывает удобно при расчетах с введенными пользователем данными, как мы вскоре увидим.
Иногда бывают ситуации, когда вам нужно именно целое число, а не строка с числом, как в примере выше. Хотя PHP и слабо типизированный, в нем существует приведение типов - можно преобразовать один тип в другой. Давайте рассмотрим пример:
<?php
$var = "30";
echo "The current datatype of var is: " . gettype($var) . "<br /><br />";
$var = (int)$var;
echo "The current datatype of var is: " . gettype($var);
?>
Мы используем ключевое слово int внутри пары круглых скобок, чтобы определить новый тип данных для переменной. Очевидно, это сработает и в обратную сторону - можно привести целое число к строковому типу и т.п.
Числа с плавающей запятой (дробные)
Как упоминалось ранее, у нас есть два разных типа данных для чисел: целые и дробные. В следующем примере я попытаюсь показать вам разницу. Попробуйте запустить следующий фрагмент кода:
<?php
$number1 = 10;
$number2 = 3;
$number3 = 5;
$result = $number1 / $number2;
echo "Result as a float: " . $result . "<br /><br />";
echo "Result as a float, rounded: " . round($result, 2) . "<br /><br />";
echo "Result as an integer: " . (int)$result . "<br /><br />";
echo "Multiplication as a float: " . ($result * $number3) . "<br /><br />";
echo "Multiplication as an integer: " . ((int)$result * $number3) . "<br /><br />";
?>
К счастью, выходные данные данного кода говорят сами за себя. Как вы можете видеть, существует разница в арифметике целых и дробных чисел. Заметьте, что PHP вернет дробное значение вместо целого, если вы разделите одно целое число на другое. Если привести результат к целому числу, он автоматически округлится вниз (т.е. дробь просто отбрасывается).