Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.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_Php 7.2_Php 7.0 - Fatal编程技术网

将多个变量传递给PHP函数

将多个变量传递给PHP函数,php,php-7.2,php-7.0,Php,Php 7.2,Php 7.0,我在将变量传递给PHP函数时遇到了一个问题。我正在用PHP7.0.33运行一个Raspberry Pi Web服务器。覆盆子上的一切都很好。当我把我的页面上传到运行PHP7.2的Godaddy服务器时,我看到了可怕的死亡白色页面。我追溯到以下几点。这是简化的 关于覆盆子: 这就是我发送变量的方式 updateCustomer($uniqueid, $name, $title); 这就是我在函数中接收它们的方式 function updateCustomer($uniqueid, $name

我在将变量传递给PHP函数时遇到了一个问题。我正在用PHP7.0.33运行一个Raspberry Pi Web服务器。覆盆子上的一切都很好。当我把我的页面上传到运行PHP7.2的Godaddy服务器时,我看到了可怕的死亡白色页面。我追溯到以下几点。这是简化的

关于覆盆子:

这就是我发送变量的方式

updateCustomer($uniqueid, $name, $title);  
这就是我在函数中接收它们的方式

function updateCustomer($uniqueid, $name, $title, $job){
}
在树莓上我发送了3个变量(
$uniqueid
$name
$title
)。函数正在查找4个变量(
$uniqueid
$name
$title
$job
),但如果最后一个变量(
$job
)不存在,则忽略它

这在Godaddy服务器上不起作用,除非我发送4个变量并接收4个变量。因此,为了进行测试,我只需像这样插入
$x
,它就可以工作了

function updateCustomer($uniqueid, $name, $title, $x){
}

所以我的问题是…这是PHP7.033和Godaddy上运行的7.2之间的函数差异吗?或者PHP设置中是否有允许此操作的设置?

两者之间的差异可能与两台机器上的PHP错误报告/日志记录配置有关

编辑:看起来PHP7.1将参数太少警告升级为错误

至于第四个参数,您可以给它一个默认值null,这样只需要3个参数

函数updateCustomer($uniqueid、$name、$title、$job=null)

是的,PHP7.0和PHP7.1之间发生了变化

在此之前(PHP=7.1),此警告已升级为错误异常。此更改仅适用于用户定义的函数,而不适用于内部函数

这就是你所看到的效果——它从一个警告(所以它是有效的,没有错误——只是一条消息)变成了一个实际的错误

解决方案是简单地修复它,向参数添加一个默认值,从而使其成为可选的

函数updateCustomer($uniqueid、$name、$title、$job=null){
// ..
}

两个字:错误报告;-)除非您直接运行它,否则它不会给出错误,因为它在自己的接口上发送错误消息,而不是在您的接口上。如果您不想发送变量,可以使用
函数updateCustomer($uniqueid,$name,$title,$job=null)
。如果您没有提供所需的所有参数,PHP将为您提供“致命错误:未捕获的参数计数器错误:函数updateCustomer()的参数太少”。您必须执行与错误日志不同的操作(例如可选参数(具有默认值))。[05-Jul-2019 15:49:18 America/New_York]PHP致命错误:Uncaught ArgumentCounter错误:函数updateCustomer()的参数太少,3传递不准确-因此,您需要给
$job
一个默认值(如声明中的
$job=null
).但如果这只是一个错误报告问题,为什么所有的东西都能在树莓上工作(错误日志中没有任何内容),而在另一个页面上出现死亡的白色页面呢?更新了我的帖子。看起来像是PHP7.0和7.1之间的变化。@jnadon To err是致命的。修好它,神啊,这就是我要找的!我把它修好了,但真的不明白发生了什么事。