1.2.905. Overwritten Source And Value¶
In a foreach(), it is best to keep source and values distinct. Otherwise, they overwrite each other.
Since PHP 7.0, PHP makes a copy of the original source, then works on it. This makes possible to use the same name for the source and the values. When the source is used as the value, the elements in the array are successively assigned to itself. After the loop, the original array has been replaced by its last element.
The same applies to the index, or to any variable in a list() structure, used in a foreach().
<?php
// displays 0-1-2-3-3
$array = range(0, 3);
foreach($array as $array) {
print $array . '-';
}
print_r($array);
/* displays 0-1-2-3-Array
(
[0] => 0
[1] => 1
[2] => 2
[3] => 3
)
*/
$array = range(0, 3);
foreach($array as $v) {
print $v . '-';
}
print_r($array);
?>
1.2.905.1. Connex PHP features¶
1.2.905.1.1. Suggestions¶
Keep the source, the index and the values distinct
1.2.905.1.2. Specs¶
Short name |
Structures/ForeachSourceValue |
Rulesets |
|
Exakat since |
1.8.9 |
PHP Version |
All |
Severity |
Minor |
Time To Fix |
Quick (30 mins) |
Precision |
Very high |
Examples |
|
Available in |