У меня есть массив объектов, и я хочу обновить атрибут одного из объектов.
$objs = [ ['value'=>2, 'key'=>'a'], ['value'=>3, 'key'=>'b'] ];
Допустим, я хочу установить 'значение' объекта с помощью 'key' => '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}]
Что подводит нас к первоначальному вопросу.