【问题标题】:How to get data from array in object如何从对象中的数组中获取数据
【发布时间】:2011-10-28 17:59:00
【问题描述】:

我似乎无法从对象内的数组中获取特定数据。

$this->fields->adres 正确获取地址,但我无法更深入。

我试过了:

$this->fields->province
$this->fields->province->0
$this->fields->province[0]

还有:(编辑)

$this->fields["province"][0]
$this->fields['province'][0]
$this->data->fields['province'][0]

但它应该返回“Flevoland”,但它没有返回任何内容。

下面的对象 print_r($this, TRUE) 的第一部分:

RSMembershipModelSubscribe Object
(
    [_id] => 2
    [_extras] => Array
        (
        )

    [_data] => stdClass Object
        (
            [username] => testzz
            [name] => testzz
            [email] => xxxx@example.com
            [fields] => Array
                (
                    [province] => Array
                        (
                            [0] => Flevoland
                        )

                    [plaats] => tesdt
                    [adres] => test

【问题讨论】:

  • 语言一致。使用“城市”和“地址”;)

标签: php arrays object


【解决方案1】:

你也可以使用类型转换。

$fields = (array) $this->data->fields;
echo $fields['province'][0];

【讨论】:

  • 正要提到这个:-)
【解决方案2】:

从您的输出中可以看出,对象成员很可能是私有的(如果您遵循约定,无论如何您必须在调用它们时添加下划线),所以您调用它们的方式是错误的; 此代码有效:

$this->_data->fields['province'][0];

你可以看到它在行动here; 我创建了一个类似的对象,并使用

$membership = new RSMembershipModelSubscribe();
echo $membership->_data->fields['province'][0];

按预期输出“Flevoland”。

【讨论】:

  • 你快到了,@Antoon :)。请考虑将此答案标记为“已接受”(计票下的勾号)以供将来参考;很高兴有帮助:)
【解决方案3】:

由于 fields 已经是一个数组,试试这个:

$this->fields['province'][0]

这假设 [_data] 对象是$this

【讨论】:

    【解决方案4】:

    字段和省份都是数组,你应该试试$this->fields["province"][0]

    【讨论】:

    • 感谢您的快速响应,不幸的是,他们都没有给出任何结果.. 还有其他建议吗?
    • 确实应该这样做。你可以在运行这行代码之前直接在 $this 上做一个 print_r ,然后再运行它吗?我怀疑可能有不同的问题。
    【解决方案5】:
    $this->_data->fields['province'][0]
    

    【讨论】:

    • 很遗憾没有。字段是一个数组
    • 在评论之前修复了它-_-
    • 感谢您的快速回复,不幸的是,他们都没有给出任何结果.. 还有其他建议吗?
    猜你喜欢
    • 1970-01-01
    • 2018-01-24
    • 2017-10-06
    • 1970-01-01
    • 1970-01-01
    • 2016-12-08
    • 2018-03-21
    • 1970-01-01
    • 2021-09-14
    相关资源
    最近更新 更多