Ok, então eu programo em PHP desde os 15 anos (puta merda! 8 anos !!!), e como eu normalmente verifico as variáveis antes de usá-las, nunca percebi esse comportamento no meu código:
Código:
<?php
error_reporting(-1);
$null = null;
$arr = array();
$str = 'string';
$int = 7;
$dbl = 7.3;
$bool = true;
$obj = new stdClass();
echo $null['nope'];
echo $null['nope']['sure'];
echo $arr['nope'];
echo $arr['nope']['sure'];
echo $str['nope'];
echo $str['nope']['sure'];
echo $int['nope'];
echo $int['nope']['sure'];
echo $dbl['nope'];
echo $dbl['nope']['sure'];
echo $bool['nope'];
echo $bool['nope']['sure'];
echo $obj['nope'];
echo $obj['nope']['sure'];
Resultado:
Notice: Undefined index: nope in /in/dNmX4 on line 16
Notice: Undefined index: nope in /in/dNmX4 on line 17
Warning: Illegal string offset 'nope' in /in/dNmX4 on line 19
s
Warning: Illegal string offset 'nope' in /in/dNmX4 on line 20
Warning: Illegal string offset 'sure' in /in/dNmX4 on line 20
s
Fatal error: Cannot use object of type stdClass as array in /in/dNmX4 on line 31
Process exited with code 255.
Sim …. então eu acho que você pode apenas usar YOLO e acessar null
‘s, inteiros, flutuantes e até booleanos como matrizes , e eles nem mesmo geram um aviso estrito …
WAT!? !!
Caso você esteja curioso sobre como isso é tratado em diferentes versões, você pode ver a saída em várias versões do PHP aqui:
http://3v4l.org/dNmX4