Задать вопрос
@Artem0071
Безработный mr. Junior

Как сделать (array) для всего объекта?

Мне приходит объект
например, user
там есть:
1) имя - user->name
2) параметры - user->extra->options

Так вот, если сделать (array)$user
то имя можно будет получить вот так - user['name'], а параметры будут смешаны - user['extra']->options

Почему не сделать jsone_decode? Потому что мне приходит как json, так и обычные формы через $_POST, $_GET

Как можно решить данную проблему?
  • Вопрос задан
  • 138 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
DevMan
@DevMan
https://ideone.com/R4IU8A

Почему не сделать jsone_decode? Потому что мне приходит как json, так и обычные формы через $_POST, $_GET
и какое это имеет отношение к вопросу?

какова цель затеи вообще? доступ к свойствам объекта удобнее, чем к элементам массива.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Stalker_RED
@Stalker_RED
Ну, например так: $array = json_decode(json_encode($user), true);Но вообще это дурь, так как "обычные формы" по умолчанию и так прасятся в "обычные массивы", так что лучше бы разобраться в каком месте они у вас превращаются в объекты, и просто не делать лишний раз конвертацию.
Ответ написан
@ynblpb_spb
дятел php
function object_to_array($obj) 
{
		$arrObj = is_object($obj) ? get_object_vars($obj) : $obj;
		foreach ($arrObj as $key => $val) {
				$val = (is_array($val) || is_object($val)) ? object_to_array($val) : $val;
				$arr[$key] = $val;
		}
		return $arr;
}
$arr = object_to_array(json_decode($POST['json']));
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы