为什么以下myFunction()
会将给定参数验证为true?这是错误捕获的,因为myFunction
通常应该接收整个数组作为参数,但在这种情况下,只有数组中的特定值("35"
)被传递给该函数。然而,它仍然被证实为真实。我在这里错过了什么,因为我不希望参数验证为真,它传递的是字符串,而不是数组?
$myVar = array('id' => '35');
myFunction($myVar['id']);
function myFunction($params) {
if (isset($params['id']) && !empty($params['id']) && $params['id'] == intval($params['id']) && $params['id'] > 0) {
echo "id is valid<br>";
echo "id = " . $params['id'] . "<br>";
echo "params = " . $params . "<br>";
print_r($params);
} else {
echo "id is invalid";
}
}
输出:
id is valid
id = 3
params = 35
35
答案 0 :(得分:0)
你没有在这里使用strict comparison $params['id'] == intval($params['id'])
,而是在这些类型中使用PHP juggles。将其更改为$params['id'] === intval($params['id'])
。
或使用is_int()功能。