3v4l.org

run code in 300+ PHP versions simultaneously
<?php $array = [ (object) ['id'=> 1, 'value' => 0], (object) ['id'=> 2, 'value' => 10], (object) ['id'=> 3, 'value' => 14], (object) ['id'=> 4, 'value' => 0], (object) ['id'=> 5, 'value' => 21], (object) ['id'=> 6, 'value' => 44], ]; $result = []; foreach ($array as $obj) { if (!$obj->value) { unset($ref); $obj->values = []; $ref = &$obj->values; $result[] = $obj; continue; } $ref[] = $obj; } var_export($result);
Output for 7.4.0 - 7.4.33, 8.0.1 - 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( 'id' => 1, 'value' => 0, 'values' => array ( 0 => (object) array( 'id' => 2, 'value' => 10, ), 1 => (object) array( 'id' => 3, 'value' => 14, ), ), ), 1 => (object) array( 'id' => 4, 'value' => 0, 'values' => array ( 0 => (object) array( 'id' => 5, 'value' => 21, ), 1 => (object) array( 'id' => 6, 'value' => 44, ), ), ), )

preferences:
56.33 ms | 408 KiB | 5 Q