Speed ​​foreach loop - a repeating array is updated without use in the task

I came across very strange behavior in the foreach loop of the following speed pattern:

<html>
<body>
<table>

#set( $arrayOfArray = [[1]] )
#set( $new_arrOfArray = [] )
#set( $new_arr = [] )
                        <tr><td>Line 9</td><td>arrayOfArray: $arrayOfArray</td></tr>
#foreach ($arr in $arrayOfArray)
                        <tr><td>Line 11</td><td>arrayOfArray: $arrayOfArray</td></tr>
    #set( $new_arr = $arr )
                        <tr><td>Line 13</td><td>arrayOfArray: $arrayOfArray</td></tr>
    #if ($new_arr.add([ true ])) #end
                        <tr><td>Line 15</td><td>arrayOfArray: $arrayOfArray</td></tr>
    #if ($new_arr.add([5,6])) #end
                        <tr><td>Line 17</td><td>arrayOfArray: $arrayOfArray</td></tr>
    #if ($new_arrOfArray.add($new_arr)) #end
                        <tr><td>Line 19</td><td>arrayOfArray: $arrayOfArray</td></tr>
#end
                        <tr><td>Line 21</td><td>arrayOfArray: $arrayOfArray</td></tr>

</table>
</body>
</html>

As you can see, I iterate over the array of the array (for simplicity, I just put one array in $ arrayOfArray in this example, but the real life, of course, is more complicated).
As you can see from the code, I do not manipulate the $ arrayOfArray variable at all. However, the code generates the following output:

String 9 arrayOfArray: [[1]]
String 11 arrayOfArray: [[1]]
String 13 arrayOfArray: [[1]]
String 15 arrayOfArray: [[1, [true]]]
String 17 arrayOfArray: [[1, [true ], [5, 6]]]
String 19 arrayOfArray: [[1, [true], [5, 6]]]
String 21 arrayOfArray: [[1, [true], [5, 6]]]

, , , $new_arr, $arrayOfArray .
- ?
.

+4
2

, . ?

#set( $new_arr = $arr )

#set( $new_arr = $arr.clone() )

$arrayOfArray , $new_arrOfArray [[1, [], [5, 6]]] .

, , - ...

+1

#set( $new_arr = $arr ) $new_arr $arr.

$arr, , $arrayOfArray .

When invoked, new_arr.add()you invoke $arrayOfArray[$someIndex].add()by reference.

0
source

Source: https://habr.com/ru/post/1677829/


All Articles