【问题标题】:PHP- unserialize to an objectPHP-反序列化为对象
【发布时间】:2015-11-07 02:25:07
【问题描述】:

是否有任何类似的 PHP 函数可以反序列化为对象而不是始终为数组?

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

我需要反序列化为一个对象,这样我才能访问像 $session_data->FirstName 这样的值,而不是 $session_data['FirstName']

编辑:我有一个可以做到这一点的函数,但对我来说这似乎很草率,我想知道是否有办法在 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;
}

【问题讨论】:

  • 是的,请阅读 serialize() 文档。如果你序列化一个对象,你可以使用数据来反序列化同一个对象
  • 这里已经完整回答了:你能在 PHP 中动态创建实例属性吗?简短的摘要。您可以使用类构造方法动态生成具有关联数组的属性,也可以使用魔术方法自定义 setter 和 getter 方法以逐个名称执行相同的操作。

标签: php


【解决方案1】:

给你:

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

【讨论】:

  • 没错,但我认为这正是 OP 想要的。 @RiggsFolly 不是吗?
  • 你可能是对的,但不是他说的他想要的
猜你喜欢
  • 2012-04-15
  • 2012-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-16
  • 2020-05-10
相关资源
最近更新 更多