【问题标题】:Passing Multiple Vars to PHP Function将多个变量传递给 PHP 函数
【发布时间】:2019-07-05 19:42:49
【问题描述】:

我在将变量传递给 PHP 函数时遇到问题。我正在使用 PHP 7.0.33 运行 Raspberry Pi 网络服务器。覆盆子上的一切都运行良好。当我将页面上传到运行 PHP 7.2 的 Godaddy 服务器时,我得到了可怕的死亡白页。我将其追溯到以下内容。这是简化的。

在树莓上:

这就是我发送变量的方式。

updateCustomer($uniqueid, $name, $title);  

这就是我在函数中接收它们的方式。

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

在覆盆子上,我发送 3 个变量($uniqueid$name$title)。该函数正在寻找 4 个变量($uniqueid$name$title$job),但如果最后一个变量($job)不存在,则忽略它。

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

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

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

【问题讨论】:

  • 两个字:报错;-)
  • 除非您直接运行它,否则它不会给出错误,因为它会在自己的界面上发送错误消息 - 而不是您的。如果您不想发送变量,可以使用function updateCustomer($uniqueid,$name,$title,$job = null)
  • 如果你没有给它所有期望的参数,PHP 会给你“致命错误:未捕获的 ArgumentCountError:函数 updateCustomer() 的参数太少”。您必须做一些不同的事情(例如可选参数(具有默认值))。
  • 来自错误日志。 [05-Jul-2019 15:49:18 America/New_York] PHP 致命错误:未捕获的 ArgumentCountError:函数 updateCustomer() 的参数太少,传入 3 个
  • 完全正确 - 因此,您需要给 $job 一个默认值(如声明中的 $job = null)。

标签: php php-7.2 php-7.0


【解决方案1】:

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

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

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

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

【讨论】:

  • 但是,如果这只是一个错误报告问题,为什么一切都可以在树莓派上运行(错误日志中没有任何内容)而另一方面却得到死亡白页?
  • 更新了我的帖子。看起来 php 7.0 和 7.1 之间的变化。
  • @jnadon 犯错是致命的。修复它,神圣的。
【解决方案2】:

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

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

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

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

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

【讨论】:

  • 这就是我想要的!我把它修好了,但真的不明白发生了什么。
猜你喜欢
  • 1970-01-01
  • 2012-06-18
  • 2012-07-24
  • 1970-01-01
  • 2015-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多