2016-06-30 2 views
-1

Я заметил, что на php с помощью JSON lib мы можем получить доступ к элементу с синтаксисом, который я раньше не видел.

$jsonObject->{'myvar'}; // return the value of myvar on the jsonobject 

Как это работает?

+2

Насколько я знаю, он работает с каждым свойством 'stdclass object' или, проще говоря, любым свойством' object'. Обычно вы собираетесь использовать такой синтаксис, когда у вас есть пробелы в именах переменных или что-то в этом роде, например: '$ object -> {" hello world "};' – briosheje

+1

какую информацию вы ищете с помощью «как это реализованы?» вы хотите понять код, который его управляет, или вам нужна документация по этой конкретной функции? – zzzzBov

+1

Часто индексы json могут иметь пробелы, поэтому использование '{}' позволяет вам получить доступ к данным, иначе '$ object-> мой индекс' не будет работать, но' $ object -> {'my index'} 'будет работать – Matt

ответ

4

Я не думаю, что это присуще JSON lib.

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

$var->{"var_name"} является эквивалентом $var->var_name.

Вы можете делать такие вещи, как хорошо:

$key = "key_name"; 

var_dump($object->{$key}); 

Вы можете также ключи доступа с недействительных символы, такие как точки или запятой.

$key = "key.name.nice"; 

var_dump($object->{$key}); 
+1

+1, но я думаю, что стоит отметить, что это особенно полезно, когда вам нужно получить доступ к свойствам, у которых есть «недопустимые» символы, такие как пробелы. Просто говорю. – briosheje

+0

Определенно. Я добавлю это, спасибо. – GiamPy