У меня есть массив, содержащий несколько объектов.Как сравнить значения объектов внутри массива?
$products = [
{"id":"1","random":"sadasd","mergethis":"Ding"},
{"id":"2","random":"assdfsadf","mergethis":"Ding"},
{"id":"2","random":"assdfsadf","mergethis":"Flop"},
{"id":"2","random":"assdfsadf","mergethis":"Bips"},
{"id":"3","random":"sdfss","mergethis":"Flung"},
{"id":"3","random":"sdfss","mergethis":"Rorg"},
{"id":"4","random":"asdasdddaf","mergethis":"Shwung"}
]
Я пытаюсь итерацией корыта этого массива и когда id
является Allready в массиве, я хочу, чтобы добавить значение mergethis
с первым ударом, который имеет то же id
, разделенный с запятой, а затем удалите объект из массива.
Так что мой ожидаемый результат стал бы:
[
{"id":"1","random":"sadasd","mergethis":"Ding"},
{"id":"2","random":"assdfsadf","mergethis":"Ding,Flop,Bips"},
{"id":"3","random":"sdfss","mergethis":"Flung,Rorg"},
{"id":"4","random":"asdasdddaf","mergethis":"Shwung"}
]
Я пытаюсь итерация корыта $products
и сравнить значения, но я застрял в сравнении значения для подзначения массива в смене на весь массив
foreach($products as $key => $value){
if (in_array($value->id, $products)) {
//Delete this item and add product_category comma sepereated to first item
//unset($products[$key]);
}
}
Это, очевидно, не работает, потому что он сравнивает элемент для всего массива в смене до значения юга id
от элемента массива.
Как мне получить ожидаемый результат?
Должен ли я создать новый массив, заполненный ключами, и значения id
каждого элемента массива и перебрать его? Или есть более простой способ сравнить значения объектов внутри массива друг с другом?
Я думаю, вам нужно создать новый массив и заполнить его во время цикла foreach. – djoosi