云服务器 精选特惠
新用户低至0.5折起 爆款免费试用3个月

在PHP8下堆代码时报错,切换到7.4就没问题,于是了解了一下。

报错:

Warning: Undefined array key "download" in /home/reishi/scriptsz.com/post.php on line 2

 

我们可以根据这个错误提示,了解到是$_POST或者$_GET获取的表单返回数组的key值未定义,因为我们是直接获取这个值,但是如果这个key未定义的话,就会报错。原因是因为 PHP8.0 之后 对于语法要求更严格了。

解决方法1

方法思路:查看本页面是否存在POST或者GET

请求方法:$_SERVER[‘REQUEST_METHOD’]

举个栗子

if ($_SERVER["REQUEST_METHOD"] == "POST")
  { $a = $_POST['xxx'];

解决办法2

方法思路:判断$_POST['xxx']或者$_GET['xxx']是否已设置并且非 NULL

方法:isset()函数

举个例子

isset($_POST['download']);

如果我们使用这一个方式的话,如果没有设置或为NULL则为false,反之为true

这样的话,这个变量就会有一个默认值,可以用这一个方式来避免报错提示。

我们经过判断后,再进行一次赋值,即可使用。可以用三目运算进行判断

isset($_POST['download'])?$download = $_POST['download']:$download = NULL

解决方法3

方法思路:直接屏蔽报错信息

方法:error_reporting(0);或者修改php.ini

这种方法不推荐,属于掩耳盗铃,明知有错误不修复,等到代码堆的多的时候头也会疼。

新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。