【问题标题】:How do i get a value out of an object in php [closed]我如何从php中的对象中获取值[关闭]
【发布时间】:2021-05-01 13:03:59
【问题描述】:

我有一个 php 对象,我想从中获取一些值

这就是我所拥有的:

$data = Array (
"title"=> "videotitle",
"filename"=> "test.mp4",
"description"=> "test"
);

$title = ???;

如何获取变量中title的值?

【问题讨论】:

  • PHP 中不存在用大括号表示的哈希或 JSON 对象。您应该使用带方括号的数组将该数据保存为 [ "key" => "value"],然后以 $data["key"] 的形式访问它。
  • 这不是有效的 php 语法。您似乎将 JSON 与 PHP 数组混淆,并编写了一些无效的组合。我建议您阅读有关 classesproperties 的手册
  • @harisdev 有 php stdclass 对象,我认为这只是代码中的误传。
  • @Devon 正确,但是,stdClass 的初始化将不同于所提供的任何内容......我相信问题的所有者想要使用 Magnus Erikkson 提到的数组。

标签: php object


【解决方案1】:

只是 php 对象的快速指南,因为您选择的符号应该会引发错误,因为 php 没有像 javascript 或其他语言那样的短对象符号。如果您想在类型提示方面使用未知的匿名对象,那么它们在某种程度上也是不干净的。

php标准类

$object = new stdClass();
$object->foo = 'bar';
$object->bar = 'foo';

$foo = $object->foo;

这应该是声明一个简单对象的唯一干净方式。当然,还有其他一些方法和方法,但不幸的是,它们都很杂乱,根本不符合干净代码的标准。

自有值对象

class MyValueObject implements JsonSerializable
{
    public function __construct(
        protected string $foo,
        protected int $bla
    ) {}

    public function jsonSerialize()
    {
        return get_object_vars($this);
    }
}

这是构造函数属性提升。这种不以旧方式定义对象属性的简短表示法从 php 8 开始可用。您可以按如下方式访问此属性。

$object = new MyValueObject('bla', 2021);
echo $object->foo; // echoes 'bla'
echo $object->bla; // echoes 2021;

要以 JSON 表示法获取对象,只需将其作为 json 回显即可。

echo json_serialize($object);

...这最终会在..

{
    foo: 'bla',
    bla: 2021
}

就是这样。

【讨论】:

    【解决方案2】:

    假设你有一个实际的 php 对象,你使用 -> 来取消引用一个对象。

    $data->title
    

    【讨论】:

    • 这是您访问对象属性的方式。不适用于提供的代码。
    • 适用于问题但不适用于无效代码块。如果他更新有关数组的问题,我将删除。
    猜你喜欢
    • 2022-01-18
    • 1970-01-01
    • 2022-08-15
    • 1970-01-01
    • 2018-12-28
    • 2020-09-09
    • 1970-01-01
    • 1970-01-01
    • 2017-01-28
    相关资源
    最近更新 更多