3v4l.org

run code in 300+ PHP versions simultaneously
<?php $array=[ (object)['entry_id'=>1,'created_at'=>'2017-04-03','meta_key'=>'Name','meta_value'=>'Smith'], (object)['entry_id'=>1,'created_at'=>'2017-04-03','meta_key'=>'Address','meta_value'=>'Saniply'], (object)['entry_id'=>1,'created_at'=>'2017-04-03','meta_key'=>'Profession','meta_value'=>'Student'], (object)['entry_id'=>2,'created_at'=>'2017-07-05','meta_key'=>'Name','meta_value'=>'John'], (object)['entry_id'=>2,'created_at'=>'2017-07-05','meta_key'=>'Address','meta_value'=>'Aviero'], (object)['entry_id'=>2,'created_at'=>'2017-07-05','meta_key'=>'Profession','meta_value'=>'Businessman'] ]; foreach($array as $obj){ // iterate all objs $id=$obj->entry_id; // cache for more readable code if(!isset($result[$id])){ // first occurrence of entry_id $result[$id]=new \stdClass(); // avoid Warning: Creating default object from empty value $result[$id]->entry_id=$id; // store entry_id $result[$id]->created_at=$obj->created_at; // store created_at } $result[$id]->{$obj->meta_key}=$obj->meta_value; // unconditionally store meta_key and meta_value } var_export(array_values($result)); // remove temporary indexes and display
Output for 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.33, 8.2.0 - 8.2.29, 8.3.0 - 8.3.27, 8.4.1 - 8.4.14
array ( 0 => (object) array( 'entry_id' => 1, 'created_at' => '2017-04-03', 'Name' => 'Smith', 'Address' => 'Saniply', 'Profession' => 'Student', ), 1 => (object) array( 'entry_id' => 2, 'created_at' => '2017-07-05', 'Name' => 'John', 'Address' => 'Aviero', 'Profession' => 'Businessman', ), )
Output for 7.1.0 - 7.1.25, 7.2.0 - 7.2.33
array ( 0 => stdClass::__set_state(array( 'entry_id' => 1, 'created_at' => '2017-04-03', 'Name' => 'Smith', 'Address' => 'Saniply', 'Profession' => 'Student', )), 1 => stdClass::__set_state(array( 'entry_id' => 2, 'created_at' => '2017-07-05', 'Name' => 'John', 'Address' => 'Aviero', 'Profession' => 'Businessman', )), )

preferences:
193.16 ms | 408 KiB | 5 Q