That always happens if you make use of undefined behaviour. And what you do is undefined behaviour. So don't try to get an explanation that follows a deterministic logic as undefined is the opposite of that.
The PHP manual states:
// mixing ++ and + produces undefined behavior
$a = 1;
echo ++$a + $a++; // may print 4 or 5
You extended your question in a comment:
echo $c=($b++) - (++$b);
the result of this statement also getting -2. What you meant by undefined behavior?
$b = 0 and it shall:
$c=($b++) - (++$b); | $b is 0 - process first brackets
$c= 0 - (++$b); | $b is 1 - process second bracktes inner operator
$c= 0 - ($b); | $b is 2 - process second brackets
$c= 0 - 2; | calculate
$c= -2;
This is obviously how it results for your code when you execute it. It is not defined that this will be always calculated that way, hence undefined. For example if the second bracket is processed first, you'll get a different result.