感谢那些插话的人...但是我修改了原来的程序,现在更加困惑:
下面是新代码:
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>";}
;}
?>
为简单起见,我创建了一个只有一行的数组。 Var_dump如下: array(1
) { [0]=> array(11) { ["groupId"]=> string(5) "25778" ["GroupName"]=> string(9) "'1canoe2'" ["StylePatternColor"]=> string(30) "A-7557-C " ["Price"]=> string(4) "5.25" ["StandardPutUp"]=> 字符串(2) "15" ["折扣"]=> 字符串(3) ".25" ["标价"]=> 字符串(3) "5.5" ["数量"]=> 字符串(1) "1" ["承诺日期"]=> 字符串(10) "07/01/2014" ["DoNotShipBefore"]=> 字符串(10) "07/01/2014" ["工具包"]=> 字符串(5) "假" } }看到套件是"假的"。 然而,当我运行该程序时,结果如下:1 真3 真4 真
这怎么可能? 如果值为真(布尔值),则 1 应该匹配,如果值为假(布尔值),则 3 应该匹配,如果 True(布尔值,我想测试区分大小写),则 4 应该匹配。 无论如何,"False"匹配,但False(布尔值)不匹配。 而且,请注意,这些都是 ==,而不是 ===。 怎么来了? 再次感谢您的输入。 我正在扯头发。
我无法理解如何在 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"]);
我得到: 数组 ( [0] => 数组 ( [组 ID] => 255...[套件] => 真 )
)1
简而言之,双等号确实找到了匹配项,但三等号没有? 我本以为情况恰恰相反。 从我在这里读到的内容来看,似乎更具体的应该有最少的歧义。
为什么精确相等失败,但 double= 找到匹配?
我已经阅读了有关差异的信息,但我显然缺少一些基本的东西。 提前谢谢。
最后一点,Kit,让我彻夜难眠。
$_SESSION["cart_array"][$key]["Kit"]
是以下之一,则会== false
:
NULL,
'',
0,
false
只有当它包含true
时,它才会=== true
你的变量($_SESSION["cart_array"][$key]["Kit"])似乎包含一个转换为true的值(如1,"true"[字符串]等)。
=== 检查类型是否相同,而 == 只检查值。
看到您的var_dump后,请说明更多内容: ["工具包"]=> 字符串(5) "假"
您的变量"Kit"来自字符串类型。这意味着它是文本。使用 === 检查它是否为布尔类型。哪个不是。因此结果 => 假。但是,使用 == 时,要比较的 to 变量首先转换为合适的变量,然后进行比较。如果将字符串"false"转换为布尔值,它将变为false,然后等于false => true。
您了解数据类型吗?如果没有,对于这种情况,值得一读。