Re: [RFC] Reclassifying engine warnings
| From: | Robert Korulczyk | Date: | Fri, 13 Sep 2019 08:01:24 +0000 |
| Subject: | Re: [RFC] Reclassifying engine warnings | ||
| References: | 1 2 3 4 5 6 7 8 9 10 11 12 13 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-107049@lists.php.net to get a copy of this message | ||
W dniu 12.09.2019 o 22:45, Rowan Tommins pisze:
> On 12/09/2019 15:43, Robert Korulczyk wrote:
>> One additional line will make your code much more obvious and easier to read and
>> understand:
>>
>> $i ??= 0;
>> $i++;
>
>
> I don't find this code at all obvious:
>
> foreach ( $something as $foo ) {
> $i ??= 0;
> $i++;
> }
That is because it does not make sense. You should initialize $i before loop, since it does not need
a loop at all (and you probably don't need ??= here):
$i ??= 0;
foreach ( $something as $foo ) {
$i++;
}
> Even using ??= the initialise-everything-before-use version looks like this:
>
> $foo = [];
> foreach ( $something as $key1 ) {
> foreach ( $somethingElse as $key2 ) {
> $foo[$key1] ??= [];
> $foo[$key1][$key2] ??= 0;
> $foo[$key1][$key2]++;
> }
> }
Actually you need only one additional line:
$foo = [];
foreach ( $something as $key1 ) {
foreach ( $somethingElse as $key2 ) {
$foo[$key1][$key2] ??= 0;
$foo[$key1][$key2]++;
}
}
> Again, the values are confusing: the end result will never contain an empty array at the first
> level, and will never contain a 0 at the second level.
It does not look confusing. You have two lines, for two intents - start counting from zero and
increment counter on every loop iteration. If one
additional line is to much for making your code less ambiguous and more bug-free, then I won't
even try to change your mind.
Regards,
Robert Korulczyk