|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2020-05-15 17:04 UTC] 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)
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sat Oct 25 19:00:01 2025 UTC |
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