2015-08-13 3 views
-2

Есть ли подобная функция PHP, которая может несериализоваться на объект, а не всегда на массив?PHP-unserialize для объекта

$session_data = unserialize($tmp[0]); // I need this to be an object 

Мне нужно десериализируются к объекту, так что я могу получить доступ к значениям как $session_data->FirstName вместо $session_data['FirstName'].

EDIT: У меня есть функция, которая будет делать это, но мне кажется, ненадежна и мне было интересно, если есть способ сделать это изначально в PHP:

function ato($array) { 
    $obj= new stdClass(); 
    foreach ($array as $k=> $v) { 
     if (is_array($v)) { 
      $v = array_to_object($v); 
     } 
     $obj->{strtolower($k)} = $v; 
    } 
    return $obj; 
} 
+2

Да, прочитайте документацию 'serialize()'. Если вы сериализовываете объект, вы можете использовать данные для несериализации одного и того же объекта. – RiggsFolly

+0

Здесь полностью ответили: Можете ли вы создавать динамические свойства экземпляра на PHP? Краткое резюме. Вы можете использовать метод конструктора классов для динамического генерации свойств с помощью ассоциативного массива, или вы можете использовать магические методы для настройки методов setter и getter для того, чтобы сделать то же самое по имени по имени. – sunny

ответ

1

Здесь вы идете:

$foo = [ 
    'bar' => 'baz', 
]; 
$foo = (object)$foo; 
echo $foo->bar; 
+1

Правда, но я думаю, что это делает именно то, что хочет OP. @RiggsFolly Не так ли? – baao

+0

Возможно, вы правы, но это не то, что он сказал, что хотел – RiggsFolly

Смежные вопросы