php代码中if语句中的意外行为
调用php代码的html文件中的控制台在执行php代码时显示以下结果: php处理:调试3:测试IF:in IF php处理:调试4:错误 但是,我希望第一个控制台结果是php代码中if语句中的意外行为,php,javascript,Php,Javascript,调用php代码的html文件中的控制台在执行php代码时显示以下结果: php处理:调试3:测试IF:in IF php处理:调试4:错误 但是,我希望第一个控制台结果是php处理:debug 3:testif:in-ELSE。例如,根据控制台,似乎执行了if-else语句的错误(if)部分,我不明白为什么(对于这个非常简单的代码) 有什么建议吗 Php代码: //TEST CODE if($productselected_form[0] == true) { $response_arr
php处理:debug 3:testif: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代码(对php代码的ajax调用中的console.log):
问题是您正在将字符串值与布尔值进行比较,而布尔值的计算结果总是为true。你应该像这样比较字符串
//TEST CODE
if($productselected_form[0] == 'true')
问题是您正在将字符串值与布尔值进行比较,而布尔值的计算结果总是为true。你应该像这样比较字符串
//TEST CODE
if($productselected_form[0] == 'true')
您的
$productselected\u表单[0]
可能是一个字符串,而不是布尔值。当使用==
时,PHP会转换类型以便比较它们
我猜你有'false'
,而不是false
。转换为布尔值时,以下字符串为false
:
- “0”
- ''(空字符串)
正确的
。因此,当您执行$productselected\u form[0]==true
时,您实际上执行的是'false'==true
,其计算结果为true
要将
'false'
转换为false
,可以执行以下操作:
$productselected_form[0] = ($productselected_form[0] === 'true');
您的
$productselected\u表单[0]
可能是一个字符串,而不是布尔值。当使用==
时,PHP会转换类型以便比较它们
我猜你有'false'
,而不是false
。转换为布尔值时,以下字符串为false
:
- “0”
- ''(空字符串)
正确的
。因此,当您执行$productselected\u form[0]==true
时,您实际上执行的是'false'==true
,其计算结果为true
要将
'false'
转换为false
,可以执行以下操作:
$productselected_form[0] = ($productselected_form[0] === 'true');
那么,
$productselected\u form[0]
的值是多少?或者我们应该猜测一下吗?$productselected\u form
包含什么?进行var\u dump($productselected\u form[0])
以准确查看您的测试对象。由于您使用的是简单的==
相等测试,PHP可以根据需要自由地进行类型转换/转换,许多东西都可以测试为true
。正如帖子所说,$productselected\u form[0]
包含false
@MarcB,请看debug4行。它被连载为假的。除了false之外,json编码中还有什么东西可以序列化为false吗?那么,$productselected\u form[0]
的值是多少,或者我们应该猜测一下吗?$productselected\u form
包含了什么?执行var\u dump($productselected\u form[0])
以查看您的测试内容。由于您使用的是简单的==
相等测试,PHP可以根据需要自由地进行类型转换/转换,许多东西都可以测试为true
。正如帖子所说,$productselected\u form[0]
包含false
@MarcB,请看debug4行。它被连载为假的。在json_编码中,除了false之外,还有什么东西可以序列化为false吗?今天很多人都很讨厌它。。。。将您的答案与@RocketHazmat的答案进行比较。当然你说得对,但这不是一个真正的答案,不能给出任何解释或任何东西。是的,我应该补充一个事实,他正在比较一个字符串值和一个布尔值,这个布尔值将始终计算为true。感谢所有的评论和建议。我确实用了“假”而不是假-(今天有很多仇恨者,看起来……将你的答案与@RocketHazmat的答案进行比较。当然,你说得对,但这不是一个真正能给出任何解释或任何东西的答案。是的,我应该补充一个事实,他正在将字符串值与布尔值进行比较,布尔值将始终计算为true。感谢所有的评论和建议。我确实用了“假”而不是假-(