我有一个对象数组,并希望更新其中一个对象的属性。
这让我们回到了最初的问题。
$objs = [
['value' => 2, 'key' => 'a'],
['value' => 3, 'key' => 'b'] ,
];
假设我想将键为'a'的对象的“值”设置为5。
除了迭代数组搜索键之外,是否还有更快/更有效的方法来完成此操作?
谢谢。
编辑: 为什么我不能使用关联数组存在争议。因为这个数组是从JSON值获取的。
如果我的JSON对象是这样的:
"obj": {
"a": {
"key": "a",
"value": 2
},
"b": {
"key": "b",
"value": 3
}
}
不能保证对象的顺序被保留,这是必需的。
因此,我需要在每个对象中添加一个索引,以便使用usort()
进行排序。所以我的JSON应该是:
"obj": {
"a": {
"key": "a",
"value": 2,
"index": 1
},
"b": {
"key": "b",
"value": 3,
"index": 2
}
}
但是我无法在一个对象上使用usort()
,只能在数组上使用。因此我的JSON需要
"obj": [
{
"key": "a",
"value": 2,
"index": 1
}, {
"key": "b",
"value": 3,
"index":2
}
]
这让我们回到了最初的问题。
['a' => $obj]
,那么你只需要检查它是否被设置并设置值:if(isset($objs['a']))$objs['a']['value'] = $value;
- user3647971