Это «фича».При использовании $string[$index]
, $index
рассматривается как целое число, поэтому 'some_key'
преобразуется в 0
.Именно поэтому вы получаете 's'
(первая буква $str
) в $res
.
$str = 'Lorem';
var_dump($str['key']); // L, because (int)'key' is 0
var_dump($str['0key']); // L
var_dump($str['1key']); // o, because (int)'1key' is 1
var_dump($str['2key']); // r
var_dump($str['3key']); // e, because (int)'3key' is 3
var_dump($str['4key']); // m
var_dump($str['5key']); // Notice: Uninitialized string offset: 5 in sandbox\index.php on line 20