Php 通过函数验证数组参数
为什么下面的Php 通过函数验证数组参数,php,Php,为什么下面的myFunction()会将给定参数验证为true?这是错误捕获的,因为myFunction通常应将整个数组作为参数接收,但在这种情况下,仅将数组中的特定值(“35”)传递给函数。然而,它仍然被证实是正确的。我在这里遗漏了什么,因为我不希望参数验证为true,它传递的是字符串,而不是数组 $myVar = array('id' => '35'); myFunction($myVar['id']); function myFunction($params) { if (
myFunction()
会将给定参数验证为true?这是错误捕获的,因为myFunction
通常应将整个数组作为参数接收,但在这种情况下,仅将数组中的特定值(“35”
)传递给函数。然而,它仍然被证实是正确的。我在这里遗漏了什么,因为我不希望参数验证为true,它传递的是字符串,而不是数组
$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";
}
}
您没有在这里使用$params['id']==intval($params['id'])
,PHP会处理这些类型。将其更改为$params['id']==intval($params['id'])
或者使用函数。这里没有使用$params['id']==intval($params['id'])
,PHP会处理这些类型。将其更改为$params['id']==intval($params['id'])
或者使用函数。这就成功了。谢谢你指出这一点。另一方面,为什么isset($params['id'])返回true?函数收到了一个字符串,而不是一个包含“id”作为键的数组。不知何故,我漏掉了:)当我运行您发布的代码时,我发现
id无效。可能是您在更改myFunction($myVar)后没有重新启动web服务器(似乎您正在浏览器中检查结果)代码>到myFunction($myVar['id'])代码>。有趣的是,您得到了不同的结果。我简化了测试代码,这样函数只需检查$params['id']是否已设置,并且仍然返回true。我已经通过web服务器(即浏览器)和CLI进行了测试。此框正在运行PHP5.3.10。请尝试添加echo json_encode($params)。“
\n”返回函数开头的代码>并查看作为参数传递的内容。返回完成该操作的“35”(引号中)。谢谢你指出这一点。另一方面,为什么isset($params['id'])返回true?函数收到了一个字符串,而不是一个包含“id”作为键的数组。不知何故,我漏掉了:)当我运行您发布的代码时,我发现id无效。可能是您在更改myFunction($myVar)后没有重新启动web服务器(似乎您正在浏览器中检查结果)代码>到myFunction($myVar['id'])代码>。有趣的是,您得到了不同的结果。我简化了测试代码,这样函数只需检查$params['id']是否已设置,并且仍然返回true。我已经通过web服务器(即浏览器)和CLI进行了测试。此框正在运行PHP5.3.10。请尝试添加echo json_encode($params)。“
\n”返回函数开头的代码>并查看作为参数传递的内容。返回“35”(引号中)
id is valid
id = 3
params = 35
35