Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php中两个和三个等号之间的差异。。。。还是仅仅是我';你把它编错了?_Php - Fatal编程技术网

php中两个和三个等号之间的差异。。。。还是仅仅是我';你把它编错了?

php中两个和三个等号之间的差异。。。。还是仅仅是我';你把它编错了?,php,Php,感谢那些插话的人……但我修改了我原来的程序,现在更困惑了: 以下是新代码: if ($_SESSION["cart_array"][$key]["Kit"]==true) {echo "<br>1 True<br>";} if ($_SESSION["cart_array"][$key]["Kit"]=="true") {echo "<br>1b True<br>";} if ($_SESSION["

感谢那些插话的人……但我修改了我原来的程序,现在更困惑了:

以下是新代码:
        if ($_SESSION["cart_array"][$key]["Kit"]==true) {echo "<br>1 True<br>";}
        if ($_SESSION["cart_array"][$key]["Kit"]=="true") {echo "<br>1b True<br>";}
        if ($_SESSION["cart_array"][$key]["Kit"]==false){echo "2 True<br>";}
        if ($_SESSION["cart_array"][$key]["Kit"]=="False"){echo "3 True<br>";}
        if ($_SESSION["cart_array"][$key]["Kit"]==True){echo "4 True<br>";}
        if ($_SESSION["cart_array"][$key]["Kit"]==False){echo "5 True<br>";}


    ;}
    ?>
if($\u会话[“购物车数组”][$key][“Kit”]==true){echo“
1 true
”;} 如果($_会话[“购物车数组”][$key][“Kit”]=“true”){echo”
1b true
“;} 如果($_会话[“购物车数组”][$key][“Kit”]==false){echo“2 True
”;} 如果($_会话[“购物车数组”][$key][“Kit”]=“False”){echo“3 True
”;} 如果($_会话[“购物车数组”][$key][“Kit”]==True){echo“4 True
”;} 如果($_会话[“购物车数组”][$key][“Kit”]==False){echo“5 True
”;} ;} ?>
为了简单起见,我创建了一个只有一行的数组。Var_转储如下所示: 数组(1){[0]=>数组(11){[“groupId”]=>字符串(5)“25778”[“GroupName”]=>字符串(9)”'1Cano2'[“StylePatternColor”]=>字符串(30)“A-7557-C”[“Price”]=>字符串(4)“5.25”[“StandardPutUp”]=>字符串(2)“15”[“折扣”=>字符串(3)”.25”[“ListPrice”]=>字符串(3)”5.5.5”[“数量”=>字符串(1)“1”[“日期”=>字符串(2014/07)”[“donotshipplefore”]=>string(10)“07/01/2014”[“Kit”]=>string(5)“False”}

看到Kit是“False”,但我运行程序时的结果如下: 1正确 3正确 4正确

这怎么可能呢?如果值为真(布尔值),则1应该匹配,如果值为假(布尔值),则3应该匹配,如果值为真(布尔值,我想测试大小写敏感度),则4应该匹配。总之,“假”匹配但为假(布尔值)没有。注意,这些都是用==,而不是==。怎么会呢?再次感谢你的输入。我正在发疯


我很难理解如何在php中计算数组变量

<?php
session_start(); 
print_r($_SESSION["cart_array"]);
$NumberOfLineItems = count($_SESSION["cart_array"]);
for ($key=0; $key<$NumberOfLineItems; $key++) {

    if ($_SESSION["cart_array"][$key]["Kit"]==true) {echo "<br>1 <br>";}
    if ($_SESSION["cart_array"][$key]["Kit"]==false){echo "2 <br>";}
    if ($_SESSION["cart_array"][$key]["Kit"]===true){echo "3 <br>";}
    if ($_SESSION["cart_array"][$key]["Kit"]===false){echo "4 <br>";}
;}
?>

    session_start(); Print_r($_SESSION["cart_array"]); 

会话_start();打印_r($_会话[“购物车数组]);
我得到:Array([0]=>Array([groupId]=>255…[Kit]=>True))

一,

简言之,双等分确实找到了匹配项,但三等分却没有找到匹配项?我本以为会正好相反。从我在这里读到的内容来看,更具体的应该具有最少的模糊性

为什么精确相等失败,而double=找到匹配

我已经读到了这些差异,但我显然遗漏了一些基本的东西。提前谢谢

最后一位Kit让我彻夜未眠。

您的变量($\u SESSION[“cart\u array”][$key][“Kit”])似乎包含一个转换为true的值(如1、“true”[string]等)

==检查类型是否相同,而==仅检查值

查看您的var_转储后的更多说明: [“Kit”]=>字符串(5)“False”

变量“Kit”来自类型string。这意味着它是文本。 With==检查它是否为布尔类型。布尔类型不是。因此结果=>false。 但是,要比较的to变量首先转换为任何合适的变量,然后进行比较。如果将字符串“false”转换为布尔值,它将变为false,然后等于false=>true


你知道数据类型吗?如果不知道,在这种情况下值得一读。

如果
==false
如果
$\u会话[“购物车数组”][$key][“Kit”]
是下列之一:

NULL, 
'', 
0,
false

只有当它包含
true
时,它才会
==true

数组显示为包含文本“true”,而不是布尔值“true”“。您可以这样说,因为print\u r实际上会显示1表示true,而不是文本。如果改用var_dump,它还将显示类型。这与数组无关。这只是关于比较文本变量和布尔变量的问题。“我在理解如何在php中计算数组变量时遇到困难。”你不会孤单,搜索php真值表——把它钉在墙上。然后想想,来自GET/POST的所有内容都是一个字符串。然后在每个条件分叉之前,对每个var临时执行var_dump()。那么,如果var_转储显示:[“Kit”]=>string(5)“False”,为什么“$\u会话[“cart_数组”][$key][“Kit”]==true”和==False都返回true?然而,==“False”是False吗?很抱歉说得太多…谢谢你的帮助。我不确定。但这可能是因为只有“false”和“false”(甚至不确定第二个)被转换为布尔值,而“false”没有被转换,因此它是真的,因为字符串是真的。