Nullable type declarations allow to replace function ( ValueType $value = null ) with function ( ?ValueType $value ). The only difference between the two is that the new syntax does not make the parameter optional any more.

void as a return type.

We can replace array|Traversable type hints with iterable now. is_iterable() goes along with this new pseudo type.

catch ( TypeAException | TypeBException $ex )

list() supports keys. This is pretty significant. Before, we could only deconstruct numerically indexed, non-sparse arrays.

Instead of list( $a, $b ) =, we can now write [ $a, $b ] =.

We can replace substr( $string, -1 ) with $string[-1]. I'm not sure if we should, but we can.

Having dealt with the oddities of IEEE floating point numbers before, I find the new constants PHP_FLOAT_MIN, PHP_FLOAT_MAX, PHP_FLOAT_EPSILON, and PHP_FLOAT_DIG fascinating. Even if they won't end in a lot of code, they give some insight into how floating point numbers work.

Regular expressions support the /J modifier, which makes it possible to have the same named capturing group multiple times in the regular expression. Note that the inline (?J) was already supported before.