Bug #79604 [Nab]: OR and || returning different results with arrays
| From: | requinix@php.net | Date: | Fri, 15 May 2020 18:32:19 +0000 |
| Subject: | Bug #79604 [Nab]: OR and || returning different results with arrays | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-227065@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=79604&edit=1
ID: 79604
Updated by: requinix@php.net
Reported by: shariefjamiel at gmail dot com
Summary: OR and || returning different results with arrays
Status: Not a bug
Type: Bug
Package: Arrays related
Operating System: mac/ubuntu
PHP Version: 7.4Git-2020-05-15 (Git)
Block user comment: N
Private report: N
New Comment:
https://www.php.net/manual/en/language.operators.precedence.php
Previous Comments:
------------------------------------------------------------------------
[2020-05-15 18:05:41] shariefjamiel at gmail dot com
I have adjusted the sanity checks, and its still the same if you are using a boolean value set in an
array and the OR , ||
/**
* PHP 7.2.24-0ubuntu0.18.04.1 (cli) (built: Oct 28 2019 12:07:07) ( NTS )
* PHP 7.4.5 (cli) (built: Apr 23 2020 02:25:56) ( NTS )
* @see https://www.php.net/manual/en/language.operators.logical.php
*/
$array = [
'a' => 'php',
'b' => false
];
# EXPECTED BEHAVIOR
$check = $array['b'] === true || $array['a'] === 'php'; //
should and is true
var_dump($check);
# ACTUAL RESULT
$check = $array['b'] === true or $array['a'] === 'php'; //
should be true
var_dump($check);
# START SANITY CHECKS
# Sanity Check 1
var_dump(false === true or 'php' === 'php'); // should be and is true
# Sanity Check 2
$a = false;
$b = 'php';
var_dump($a === true or $b === 'php'); // should be and is true
------------------------------------------------------------------------
[2020-05-15 17:54:42] shariefjamiel at gmail dot com
Please delete my comment that i got my script wrong, its right. Sorry for confusion.
------------------------------------------------------------------------
[2020-05-15 17:38:42] shariefjamiel at gmail dot com
ignore this been a long day, i think got my test script wrong.
------------------------------------------------------------------------
[2020-05-15 17:04:44] shariefjamiel at gmail dot com
Description:
------------
I noticed the OR operator was not working properly with a value inside an array,
Test script:
---------------
/**
* PHP 7.2.24-0ubuntu0.18.04.1 (cli) (built: Oct 28 2019 12:07:07) ( NTS )
* PHP 7.4.5 (cli) (built: Apr 23 2020 02:25:56) ( NTS )
* @see https://www.php.net/manual/en/language.operators.logical.php
*/
$array = [
'a' => 'php',
'b' => false
];
# EXPECTED BEHAVIOR
$check = $array['b'] === true || $array['a'] === 'php'; //
should and is true
var_dump($check);
# ACTUAL RESULT
$check = $array['b'] === true or $array['a'] === 'php'; //
should be true
var_dump($check);
# START SANITY CHECKS
# Sanity Check 1
var_dump(true === true or 'php' === 'php'); // should be and is true
# Sanity Check 2
$a = true;
$b = 'php';
var_dump($a === true or $b === 'php'); // should be and is true
Expected result:
----------------
bool(true)
bool(true)
bool(true)
bool(true)
Actual result:
--------------
bool(true)
bool(false)
bool(true)
bool(true)
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=79604&edit=1