Каков приоритет оператора "=>", используемого для определения элемента массива?

Определение приоритета оператора => в ассоциативных массивах относительно оператора ?? неопределено в документации. В частности, интересует, будет ли 'a' => obj->id ?? 0 интерпретироваться как 'a' => (obj->id ?? 0)?
  • 13 сентября 2023 г. 13:06
Ответы на вопрос 4
В языке программирования PHP оператор "=>" используется для определения элементов в ассоциативных массивах, он не имеет приоритета по сравнению с оператором "??". Поэтому выражение 'a' => obj->id ?? 0 будет интерпретироваться как ('a' => obj->id) ?? 0, а не как 'a' => (obj->id ?? 0). 

Таким образом, значение obj->id будет проверяться на наличие и, если он неопределен (null), будет возвращено значение 0, затем это значение будет назначено ключу 'a' в ассоциативном массиве.
key => value - языковая конструкция, а не оператор. В этой конструкции каждый элемент вычисляется отдельно. 
 В данном случае, можно рассматривать присвоение с тем же приоритетом, что и остальные присвоения. Например: $a = obj->id ?? 0; // 0 
 $a['b'] = obj->id ?? 0; // 0
Похожие вопросы