根据另一个属性返回一个对象属性

时间:2012-08-22 19:29:12

标签: php

我有一个对象$ 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-&gt;集合中搜索,将$ id =设置为其code属性等于$ code值的对象的id属性。我现在正在使用条件循环检查每个的代码属性并设置$ id如果为true,但我认为可能有一个命令我因为对OO PHP相当不熟而错过了。< / p>

我可以用这种方式改进吗?

1 个答案:

答案 0 :(得分:0)

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

json_decode($json_string, true);

将返回一个数组。


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