Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 通过函数验证数组参数_Php - Fatal编程技术网

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