Я не понимаю этот синтаксис массива - PullRequest
0 голосов
/ 20 января 2011

Я не понимаю синтаксис доступа к этому массиву:

$target[$segs[count($segs)]]

Действительно ли возможно использовать переменные в качестве ключей многомерного массива?

Ответы [ 2 ]

3 голосов
/ 20 января 2011

Это может привести к ошибке, если $segs является числовым массивом только с непрерывными индексами.
Это означает, что произойдет сбой для:

array("foo","bar");

, но будет работать для

array("foo", 2=>"bar");

Если предположить, что мы имеем дело с первым случаем, то это будет работать:

$target[$segs[count($segs) - 1]]

Сначала count($segs) - 1 будет вычислено и вернет число.В этом случае последний индекс из $segs (при условии, что это числовой массив).

$segs[count($segs) - 1] поэтому вернет последний элемент в $segs,И какое бы это значение ни было, оно будет использовано как индекс для $target[...].


Подводя итог: Это индексирование вложенного массива и вычисление наизнанку.

См. Это в действии.

Необходим ли такой метод или нет, зависит от проблемы, которую вы пытаетесь решить.Если вы не знаете, где использовать такую ​​вложенную переменную индексацию массива, вам, вероятно, это не нужно.

2 голосов
/ 20 января 2011

Этот синтаксис в порядке, если $segs является массивом.Однако стоит отметить, что если вы используете числовой индексированный массив для $segs, вызов count($segs) является несуществующим ключом, потому что индексация начинается с нуля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...