Bug #77845 [Com]: Error in the comparaison
| From: | a at b dot c dot de | Date: | Thu, 11 Apr 2019 21:21:58 +0000 |
| Subject: | Bug #77845 [Com]: Error in the comparaison | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-220405@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=77845&edit=1
ID: 77845
Comment by: a at b dot c dot de
Reported by: baklouti dot med at gmail dot com
Summary: Error in the comparaison
Status: Not a bug
Type: Bug
Package: *Compile Issues
Operating System: ubuntu 18.04
PHP Version: 7.2.16
Block user comment: N
Private report: N
New Comment:
I didn't understand that last part.
More useful for use would be a complete example that we could run that demonstrates your issue. The
bug reporting form offers space for you to enter such a "test script". The code you have
provided does not demonstrate your problem because if $id===0 then the second line of your code will
cause "return 1;" to be evaluated and the switch will never even be reached.
Previous Comments:
------------------------------------------------------------------------
[2019-04-04 14:50:44] baklouti dot med at gmail dot com
ok switch works so fine, you can test it if you are so sure and tell us the result, because when id
in the array test contains 0, the $is =0, and even test it with var_dump, and gettype to be sure
before post this, thank you.
------------------------------------------------------------------------
[2019-04-04 14:37:14] spam2 at rhsoft dot net
hell post the code you are actually using instead f**g decriptions ike " am not using the two
cases in the same time" - switch works, full stop, echo what $id contains really at that moment
------------------------------------------------------------------------
[2019-04-04 14:34:18] baklouti dot med at gmail dot com
Yes, I try it with "case 0:" , and the same issue is happening.
------------------------------------------------------------------------
[2019-04-04 11:21:37] kalle@php.net
Because
($id === 0) is evaluated as an expression before, meaning that essentially the
case statement now looks like case 1:. The correct way to do that which
you are trying to would be to make your case statement simply look like case 0:.
Please refer to the documentation int the future:
https://www.php.net/manual/en/control-structures.switch.php
------------------------------------------------------------------------
[2019-04-04 11:10:25] baklouti dot med at gmail dot com
Description:
------------
I am testing the value of $id to do some processing. I retrieve the variable $id from an array
($test) and converted to integer, for the case that $id = 0 when using "switch" it
can't be detected and if I used the "if" it is working fine.
I tried with the "==" and the "===" and also not working with
"switch".
I am not using the two cases in the same time, i tested the "if" and "switch"
separately.
$id = (integer)$test['id'];
if ($id === 0 ) {return 1;}
switch ($id) {
case ($id === 0):
return 2;
....
Expected result:
----------------
The expected result is the bloc inside the case ($id ===0) is processed.
Actual result:
--------------
The actual result that it is passed for another case.
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=77845&edit=1