php最常出现的错误
目录
1. E_WARNING:为?foreach?()提供的参数无效
2. PDOException:拒绝SQLSTATEHY000连接
1. E_WARNING:为?foreach?()提供的参数无效
PHP foreach构造在PHP 4中引入,提供了一种迭代数组和可迭代对象的简单方法,例如实现\Traversable接口的对象。尝试在具有不同数据类型或未初始化变量的变量上使用它。它将发出错误,例如下面的示例。
$ y_exceptions = null ;
foreach($ y_?Exception?s as $ thisException){
}
上面的代码抛出与消息“()提供的foreach无效参数”警告,因为$y_exceptions不是数组也不实现ArrayAccess,\Traversable或任何其它可迭代接口。
2. PDOException:拒绝SQLSTATEHY000连接
PDOExceptions代表PDO(PHP数据对象)引发的错误,正如PHP手册所描述的那样,它是“?用于访问PHP数据库的轻量级,一致的接口?”。
“PDOException:Connection refused”的可能根本原因可能是以下之一:
- 您没有足够的权限来访问数据库或以该用户身份执行该操作。
- 您的数据库参数(服务器名称?主机名和/或端口号,用户名,密码,数据库名称)不正确。
- 您拥有数据库的服务器无法访问 – 它可能处于脱机状态。
3.错误使用empty函数
一些PHP开发人员喜欢用empty()函数去对变量或表达式做布尔判断,但在某些情况下会让人很困惑。
首先我们来看看PHP中的数组Array和数组对象ArrayObject。看上去好像没什么区别,都是一样的。真的这样吗?
// PHP 5.0 or later:
$array=[];
var_dump(empty($array));// outputs bool(true)
$array=newArrayObject();
var_dump(empty($array));// outputs bool(false)
// why don't these both produce the same output?
让事情变得更复杂些,看看下面的代码:
// Prior to PHP 5.0:
$array=[];
var_dump(empty($array));// outputs bool(false)
$array=newArrayObject();
var_dump(empty($array));// outputs bool(false)
很不幸的是,上面这种方法很受欢迎。例如,在Zend Framework 2中,Zend\Db\TableGateway 在 TableGateway::select() 结果集上调用 current() 方法返回数据集时就是这么干的。开发人员很容易就会踩到这个坑。
为了避免这些问题,检查一个数组是否为空最后的办法是用 count() 函数
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!