Spread array ----- <?php $array = [1, 2, 3]; function getArr() { return [4, 5]; } function arrGen() { for($i = 11; $i < 15; $i++) { yield $i; } } [...[]]; [...[1, 2, 3]]; [...$array]; [...getArr()]; [...arrGen()]; [...new ArrayIterator(['a', 'b', 'c'])]; [0, ...$array, ...getArr(), 6, 7, 8, 9, 10, ...arrGen()]; [0, ...$array, ...$array, 'end']; ----- array( 0: Stmt_Expression( expr: Expr_Assign( var: Expr_Variable( name: array ) expr: Expr_Array( items: array( 0: Expr_ArrayItem( key: null value: Scalar_LNumber( value: 1 ) byRef: false unpack: false ) 1: Expr_ArrayItem( key: null value: Scalar_LNumber( value: 2 ) byRef: false unpack: false ) 2: Expr_ArrayItem( key: null value: Scalar_LNumber( value: 3 ) byRef: false unpack: false ) ) ) ) ) 1: Stmt_Function( byRef: false name: Identifier( name: getArr ) params: array( ) returnType: null stmts: array( 0: Stmt_Return( expr: Expr_Array( items: array( 0: Expr_ArrayItem( key: null value: Scalar_LNumber( value: 4 ) byRef: false unpack: false ) 1: Expr_ArrayItem( key: null value: Scalar_LNumber( value: 5 ) byRef: false unpack: false ) ) ) ) ) ) 2: Stmt_Function( byRef: false name: Identifier( name: arrGen ) params: array( ) returnType: null stmts: array( 0: Stmt_For( init: array( 0: Expr_Assign( var: Expr_Variable( name: i ) expr: Scalar_LNumber( value: 11 ) ) ) cond: array( 0: Expr_BinaryOp_Smaller( left: Expr_Variable( name: i ) right: Scalar_LNumber( value: 15 ) ) ) loop: array( 0: Expr_PostInc( var: Expr_Variable( name: i ) ) ) stmts: array( 0: Stmt_Expression( expr: Expr_Yield( key: null value: Expr_Variable( name: i ) ) ) ) ) ) ) 3: Stmt_Expression( expr: Expr_Array( items: array( 0: Expr_ArrayItem( key: null value: Expr_Array( items: array( ) ) byRef: false unpack: true ) ) ) ) 4: Stmt_Expression( expr: Expr_Array( items: array( 0: Expr_ArrayItem( key: null value: Expr_Array( items: array( 0: Expr_ArrayItem( key: null value: Scalar_LNumber( value: 1 ) byRef: false unpack: false ) 1: Expr_ArrayItem( key: null value: Scalar_LNumber( value: 2 ) byRef: false unpack: false ) 2: Expr_ArrayItem( key: null value: Scalar_LNumber( value: 3 ) byRef: false unpack: false ) ) ) byRef: false unpack: true ) ) ) ) 5: Stmt_Expression( expr: Expr_Array( items: array( 0: Expr_ArrayItem( key: null value: Expr_Variable( name: array ) byRef: false unpack: true ) ) ) ) 6: Stmt_Expression( expr: Expr_Array( items: array( 0: Expr_ArrayItem( key: null value: Expr_FuncCall( name: Name( parts: array( 0: getArr ) ) args: array( ) ) byRef: false unpack: true ) ) ) ) 7: Stmt_Expression( expr: Expr_Array( items: array( 0: Expr_ArrayItem( key: null value: Expr_FuncCall( name: Name( parts: array( 0: arrGen ) ) args: array( ) ) byRef: false unpack: true ) ) ) ) 8: Stmt_Expression( expr: Expr_Array( items: array( 0: Expr_ArrayItem( key: null value: Expr_New( class: Name( parts: array( 0: ArrayIterator ) ) args: array( 0: Arg( value: Expr_Array( items: array( 0: Expr_ArrayItem( key: null value: Scalar_String( value: a ) byRef: false unpack: false ) 1: Expr_ArrayItem( key: null value: Scalar_String( value: b ) byRef: false unpack: false ) 2: Expr_ArrayItem( key: null value: Scalar_String( value: c ) byRef: false unpack: false ) ) ) byRef: false unpack: false ) ) ) byRef: false unpack: true ) ) ) ) 9: Stmt_Expression( expr: Expr_Array( items: array( 0: Expr_ArrayItem( key: null value: Scalar_LNumber( value: 0 ) byRef: false unpack: false ) 1: Expr_ArrayItem( key: null value: Expr_Variable( name: array ) byRef: false unpack: true ) 2: Expr_ArrayItem( key: null value: Expr_FuncCall( name: Name( parts: array( 0: getArr ) ) args: array( ) ) byRef: false unpack: true ) 3: Expr_ArrayItem( key: null value: Scalar_LNumber( value: 6 ) byRef: false unpack: false ) 4: Expr_ArrayItem( key: null value: Scalar_LNumber( value: 7 ) byRef: false unpack: false ) 5: Expr_ArrayItem( key: null value: Scalar_LNumber( value: 8 ) byRef: false unpack: false ) 6: Expr_ArrayItem( key: null value: Scalar_LNumber( value: 9 ) byRef: false unpack: false ) 7: Expr_ArrayItem( key: null value: Scalar_LNumber( value: 10 ) byRef: false unpack: false ) 8: Expr_ArrayItem( key: null value: Expr_FuncCall( name: Name( parts: array( 0: arrGen ) ) args: array( ) ) byRef: false unpack: true ) ) ) ) 10: Stmt_Expression( expr: Expr_Array( items: array( 0: Expr_ArrayItem( key: null value: Scalar_LNumber( value: 0 ) byRef: false unpack: false ) 1: Expr_ArrayItem( key: null value: Expr_Variable( name: array ) byRef: false unpack: true ) 2: Expr_ArrayItem( key: null value: Expr_Variable( name: array ) byRef: false unpack: true ) 3: Expr_ArrayItem( key: null value: Scalar_String( value: end ) byRef: false unpack: false ) ) ) ) )