【问题标题】:Return an object property based on another property基于另一个属性返回一个对象属性
【发布时间】:2012-08-22 19:29:12
【问题描述】:

我有一个对象 $obj,它是 json_encode 的结果,其结构类似于:

stdClass Object (
    [page] = 1
    [size] = -1
    [total] = 4
    [collection] = Array
        (
            [0] = stdClass Object
                (
                    [id] = 4e87de8e1a8840999f907fad
                    [description] = ffffffff
                    [code] = 82666
                    [status] = ACTIVE
                )

            [1] = stdClass Object
                (
                    [id] = 4e8b4b53fda5efeeec370e89
                    [description] = gggggggggg
                    [code] = 41874
                    [status] = ACTIVE
                )

            [2] = stdClass Object
                (
                    [id] = 4e8b4b5afda5efeeec370e8a
                    [description] = hhhhhhhhhhhhh
                    [code] = 15130
                    [status] = ACTIVE
                )

            [3] = stdClass Object
                (
                    [id] = 4e90a753e91a2713c95b56a0
                    [description] = jjjjjjjjjjjjjj
                    [code] = 323307
                    [status] = ACTIVE
                )

            [4] = stdClass Object
                (
                    [id] = 4e9e08da79597f0d3daba159
                    [description] = kkkkkkkkkkkkkk
                    [code] = 11310
                    [status] = ACTIVE
                )
        ) )

我有一个值$code,想在$obj->collection中搜索,将$id =设置为code属性等于$code值的对象的id属性。我现在使用条件循环来检查每个的代码属性并设置 $id 如果为真,但我认为由于对 OO PHP 相当不熟悉,我可能会错过一个命令。

有什么办法可以改进吗?

【问题讨论】:

  • 你能告诉我们你的代码吗?
  • 第一步是使用数组而不是stdClasses,您可以通过将true设置为json_decode()的第二个参数来实现。这不是 OO PHP。

标签: php


【解决方案1】:

让我打开这个:stdClass 与数组相比没有优势(除了它可能“看起来很酷”)。它实际上不是 OOP。要使用数组而不是stdClasses,请将true 作为json_decode() 的第二个参数:

json_decode($json_string, true);

将返回一个数组。


除此之外,迭代和检查 $code 似乎是要走的路。没有 PHP 函数可以为您做到这一点(感谢上帝)。然而,数组具有能够被数组函数操作的明显优势(更不用说效率提升了)。

【讨论】:

  • 我称之为 OOP 可能证明了我前面提到的缺乏 OOP 经验。 “只使用数组”对我来说听起来是个不错的解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-06-14
  • 2020-03-02
  • 2014-04-19
  • 2016-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多