1.2.582. Integer As Property

It is backward incompatible to use integers are property names. This feature was introduced in PHP 7.2.

If the code must be compatible with previous versions, avoid casting arrays to object.

<?php

// array to object
$arr = [0 => 1];
$obj = (object) $arr;
var_dump(
    $obj,
    $obj->{'0'}, // PHP 7.2+ accessible
    $obj->{0} // PHP 7.2+ accessible

    $obj->{'b'}, // always been accessible
);
?>

See also PHP RFC: Convert numeric keys in object/array casts.

1.2.582.1. Suggestions

  • Add a prefix with letters whenever property’s name adaptation is possible

1.2.582.2. Specs

Short name

Classes/IntegerAsProperty

Rulesets

All, CompatibilityPHP53, CompatibilityPHP54, CompatibilityPHP55, CompatibilityPHP56, CompatibilityPHP70, CompatibilityPHP71

Exakat since

1.0.4

PHP Version

With PHP 7.2 and more recent

Severity

Major

Time To Fix

Slow (1 hour)

Precision

High

Features

property

Available in

Entreprise Edition, Exakat Cloud