不是什么大问题,但我想知道是否有更干净的方法来做这件事.最好避免使用不必要的if语句嵌套我的代码.如果$items为空,php将抛出错误.

$items = array('a','b','c');

if(!empty($items)) { // <-Remove this if statement
  foreach($items as $item) {
    print $item;
  }
}

我可能只需要使用"@"错误 suppress 器,但这会有点不方便.

推荐答案

有一百万种方法可以做到这一点.

第一个方法是,假设您确实有一个数组,那么无论如何都要通过foreach来运行该array.

在其他情况下,这是您可能需要的:

foreach ((array) $items as $item) {
    print $item;
}

Note: to all the people complaining about typecast, please note that the OP asked cleanest way to skip a foreach if array is empty (emphasis is mine). A value of true, false, numbers or strings is not considered empty. In addition, this would work with objects implementing \Traversable, whereas is_array wouldn't work.

Php相关问答推荐

CodeIgniter AJAX表格提交中的CSRF token 再生问题

PHP,ZipArchive删除一个空文件?

致命错误:无法使用简单的php博客重新声明spl_autoload_Register()

PHP如何将ARRAY_MAP与Reset()配合使用

使用WordPress wp_mail()的邮箱标题无效

Laravel关系-为用户获取属于组织的所有团队

在Laravel Eloquent中实现一对多关系

Php解压缩deflate64

shell_exec运行大型数据处理

是否有条件判断是否发布了另一个Wordpress页面?

Laravel 10.x在到达控制器之前将查询参数强制转换为正确的类型

允许在WooCommerce管理订单列表中使用计费邮箱进行搜索

使用 foreach php 将记录正确分配给正确的父级

如何在 PHP 中对具有相同数组值的值求和

使用 Laravel 和 Vue 进行图像表单验证

循环中未序列化数组显示的问题

使用现有的htaccess的PHP路由脚本

我试图在我的视图上显示从数据库中获取的数据,但我无法显示它.拉维尔 10.x /

为什么 ECDSA 384 签名验证在 GO 中失败,但在 PHP 中却没有?

来自命令行的 PHP 没有给出正确的结果