Обратитесь к странице арифметических операторов в руководстве .
Если в php есть две сущности для выполнения арифметики / математики, то это будет приоритетом, а не идентификацией / отрицанием. Символы +
и -
будут рассматриваться как операторы идентификации / отрицания, когда математическая операция уже определена между двумя объектами или когда существует только один объект.
Код: ( Демо )
$var4 = 0 - - 4; // zero minus negated 4
var_export($var4);
echo "\n";
$var5 = - 5; // negated 5
var_export($var5);
echo "\n";
$var6 = - - 6; // negated negated 6
var_export($var6);
echo "\n";
$var7 = - - - 7; // negated negated negated 7
var_export($var7);
echo "\n";
$var8 = - - - - 8; // negated negated negated negated 8
var_export($var8);
Выход:
4
-5
6
-7
8
Операторы без плюса / минуса, а именно: *
, /
, %
и **
, имеют только одну интерпретацию и, таким образом, вызывают ошибку синтаксического анализа, когда предшествующая математическая операция уже определено.
Ниспадающие правосторонние арифметические операторы нельзя использовать как сложение, вычитание, тождество, отрицание и т. Д., Что может привести к ошибке разбора. Например, 8 - -
https://3v4l.org/qr2D8
Кроме того ...
echo 1 + - 2; // -1 (1 plus neg 2)
echo "\n";
echo 1 - + 2; // -1 (1 minus pos 2)
echo "\n";
echo 1 + - - 3; // 4 (1 plus neg neg 3)
echo "\n";
echo 1 - + + 3; // -2 (1 minus pos pos 3)
echo "\n";
echo 1 - - - 3; // -2 (1 minus neg neg 3)
echo "\n";
echo 1 + + + 3; // 4 (1 plus pos pos 3)
echo "\n";
echo 1 + + - - 4; // 5 (1 plus pos neg neg 4)
echo "\n";
echo 1 - - + + 4; // 5 (1 minus neg pos pos 4)
echo "\n";
echo 1 - - - - 4; // 5 (1 minus neg neg neg 4)
echo "\n";
//echo 1 - - * + 4; // parse error
//echo "\n";