0

调用 php 代码的 html 文件中的控制台在执行 php 代码时显示以下结果:

php处理:调试3:测试IF:在IF

php处理:调试4:假

但是,我希望第一个控制台结果是php processing: debug 3: TEST IF: in ELSE. 例如,似乎根据控制台执行了 if-else 语句的错误(if)部分,我不明白为什么(对于这个非常简单的代码)???

有什么建议么?

php代码:

//TEST CODE
if($productselected_form[0] == true)
{
    $response_array['debug3'] = 'TEST IF: in IF';
}
else
{
    $response_array['debug3'] = 'TEST IF: in ELSE';
}
$response_array['debug4'] = $productselected_form[0];

//send the response back
echo json_encode($response_array);
//END TEST CODE

Javascript代码(ajax调用php代码中的console.log):

console.log("php processing: debug 3: "+msg.debug3);
console.log("php processing: debug 4: "+msg.debug4);
4

2 回答 2

4

问题是您将字符串值与布尔值进行比较,该布尔值将始终评估为真。您应该像这样将 String 与 String 进行比较

//TEST CODE
if($productselected_form[0] == 'true')
于 2013-08-23T16:13:10.163 回答
2

$productselected_form[0]可能是一个字符串,而不是一个布尔值。使用 时==,PHP 会转换类型以便比较它们。

我猜你有'false',没有false。转换为布尔值时,以下字符串为false

  • '0'
  • ''(空字符串)

其他的都是true。因此,当您这样做时$productselected_form[0] == true,您实际上是在做'false' == true,其计算结果为true


要转换'false'false您可以执行以下操作:

$productselected_form[0] = ($productselected_form[0] === 'true');
于 2013-08-23T16:17:52.103 回答