PHP:为什么这个加法的答案是20而不是22?

Why is the output to this 20, and not 22? Seeing as you're adding 10 + 0xA(which is 10 in HEX) + 2.

$a = 010;
$b = 0xA;
$c = 2;

print $a + $b + $c;

Output: 20.

It's correct!

(Because the first number is octal so if you want it to be interpreted as a decimal you have to remove the first 0) Se:

$a = 010;  //Octal -> 8
$b = 0xA;  //Hex   -> 10
$c = 2;    //Dec   -> 2

print $a + $b + $c;  //20

Output:

20

See the manual for numbers:

To use octal notation, precede the number with a 0 (zero). To use hexadecimal notation precede the number with 0x. To use binary notation precede the number with 0b.

010 is an octal number (it starts with a 0 which isn't followed by a decimal point), which is 8 in decimal.

This will solve:

<?php
$a = 10;
$b = 0xA;
$c = 2;

print $a + $b + $c;
?>

The 0 leading for $a was putting is as an Octal value, not decimal one.