1.2.1286. Unset In Foreach¶
Unset applied to the variables of a foreach
loop are useless. Those variables are copies and not the actual value. Even if the value is a reference, unsetting it has no effect on the original array : the only effect may be indirect, on elements inside an array, or on properties inside an object.
<?php
// When unset is useless
$array = [1, 2, 3];
foreach($array as $a) {
unset($a);
}
print_r($array); // still [1, 2, 3]
foreach($array as $b => &$a) {
unset($a);
}
print_r($array); // still [1, 2, 3]
// When unset is useful
$array = [ [ 'c' => 1] ]; // Array in array
foreach($array as &$a) {
unset(&$a['c']);
}
print_r($array); // now [ ['c' => null] ]
?>
1.2.1286.1. Connex PHP features¶
1.2.1286.1.1. Suggestions¶
Drop the unset
1.2.1286.1.2. Specs¶
Short name |
Structures/UnsetInForeach |
Rulesets |
|
Exakat since |
0.8.4 |
PHP Version |
All |
Severity |
Major |
Time To Fix |
Quick (30 mins) |
Precision |
Very high |
Available in |