将多个变量传递给 PHP 函数

Passing Multiple Vars to PHP Function

我在将变量传递给 PHP 函数时遇到问题。我是 运行 一个 Raspberry Pi 网络服务器 PHP 7.0.33。覆盆子上的一切都运行良好。当我将页面上传到 运行 PHP 7.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){
}

所以我的问题...这是 PHP 7.033 和 Godaddy 上 运行 的 7.2 之间的功能差异吗?或者 PHP 设置中是否有允许此工作的设置?

两者之间的差异可能与两台机器上的 PHP 错误 reporting/logging 配置有关。

编辑:看起来像 php 7.1 将参数太少的警告提升为错误。 https://php.net/manual/en/migration71.incompatible.php

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

function updateCustomer($uniqueid, $name, $title, $job = null)

是的,PHP 7.0 和 PHP 7.1 之间发生了变化。

Previously (PHP <=7.0), a warning would be emitted for invoking user-defined functions with too few arguments. Now (PHP >=7.1), this warning has been promoted to an Error exception. This change only applies to user-defined functions, not internal functions.

这就是您所看到的效果 - 它已从警告(有效,没有错误 - 只是一条消息)更改为实际错误。

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

function updateCustomer($uniqueid, $name, $title, $job = null) {
   // ..
}