Я искал этот код из этого ответа :
$string = 'item1:item2:itemx';
$res = array();
$temp = &$nested_array;
foreach(explode(':', $string) as $key) {
$temp = &$temp[$key];
}
, что, благодаря только до $temp = &$temp[$key]
, приводит к:
$res = [
"item1" => [
"item2" => [
"itemx" => & null
]]]
Я не понимаю, почему &temp[$key]
создает ассоциацию [$key => null]
, а $temp[$key]
- нет.
Я сделал некоторую отладку и для первого $key
( item1 ):
- $ a = $ temp [$ key]:
- выдает уведомление "неопределенный индекс" .
- dumping
$a
возвращает ноль.
- dumping
$temp
возвращает ноль.
- $ a = & $ temp [$ key]:
- не выдает уведомление «неопределенный индекс» .
- dumping
$a
возвращает ноль.
- dumping
$temp[$key]
возвращает ноль.
- сброс
$temp
возвращает:
["item1" => & null]
Это означает, что $temp = & $temp[$key]
создает также $ temp [$ key] или, что эквивалентно, ему предшествует:
$temp = &temp[$key]; <=> $temp[$key] = null; $temp = &temp[$key];
Я хотел бы понять, объясняется ли это где-нибудь в документации php (я искал, но ничего не нашел) или я что-то упустил obviuos.
Спасибо