#php #wordpress #object
#php #wordpress #объект
Вопрос:
Я работаю над пользовательской функцией для WordPress
.
У меня есть большой объект:
{
"name": "Jon",
"personal_information": {
"Age": "18",
"School": 'School_name',
},
"rewards": {
"soccer": {
"display": 'Hello soccer',
"rate": 5,
"type": 'soccer',
},
}
}
Пользователь может получить эту информацию с помощью шорткода:
[info name] // Will display "Jon"
[info rewards soccer display] // Will display "Hello soccer"
Таким образом, шорткод на самом деле является массивом:
info = Array ()
[0] -> rewards
[1] -> soccer
[2] -> display
И для получения данных из объекта я делаю:
echo $object -> $info[0]->$info[1]->$info[2];
Есть ли какой-нибудь способ сделать то же самое через цикл?
Поэтому у меня не будет чего-то вроде $info[0]->$info[1]->$info[2];
Ответ №1:
Вы можете использовать while
цикл как:
$info = json_decode('{"name": "Jon","personal_information": {"Age": "18","School": "School_name"},"rewards": {"soccer": {"display": "Hello soccer","rate": 5,"type": "soccer"}}}');
$arr = explode(" ", "info rewards soccer display");
array_shift($arr); // remove the name of the object - info
$res = $info;
while (count($arr)) {
$key = array_shift($arr);
$res = $res->$key;
}
echo $res; // prints Hello soccer