4 ms·
>It will still work calling $a['1'] with the quotes so what exactly is the issue? Oh yea. Try this. $a = array ('1' => 'one'); foreach ($a as $k=>$v)
by imakesnowflakes 11y ago
>It will still work calling $a['1'] with the quotes so what exactly is the issue?
Oh yea. Try this.
$a = array ('1' => 'one');
foreach ($a as $k=>$v) {
if ($a === '1') {
echo "found one";
}
}
Surprise! Never prints "found one".
THAT is the issue! I used '===' so I should be safe from type coercion issues, right? Well, a hidden rule in php says no.
See this bug..oops feature, when it bit even experienced php programmers here
https://www.reddit.com/r/PHP/comments/2zhg6z/how_true_is_this_php_bashing/cpjhx04 https://www.reddit.com/r/PHP/comments/2zhg6z/how_true_is_thi...
See that post and the comment from the user e-tron. Both of them who are experienced php programmers
- codygman 11y agofrom that post: > Bad idea? Sure. But once you know the enemy you can deal with it Why surround yourself with more enemies than those that inherently exist in your business logic/problem domain? The problem with PHP is all of those "no big deal tiny issues" add up to something reminiscent of death by 1000 papercuts.
- imakesnowflakes 11y agoA correction. it is if ($k === '1') instead of if ($a === '1')..