首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >前循环前检查变量,速记?

前循环前检查变量,速记?
EN

Stack Overflow用户
提问于 2013-09-03 14:23:56
回答 4查看 916关注 0票数 0

我经常设置如下代码:

代码语言:javascript
复制
if ($arr) {
    foreach ($arr as $a) {
        // Code stuffs
    }
}

如果$arr不存在,那么一点也不重要,所以我倾向于使用每个人最喜欢的抑制器(@),而不是用If语句来搅乱我的代码。

  • 如果在同一条线上检查和预测,是否有某种速记可以做呢?
  • 在这种情况下,消除错误有什么大问题吗?
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-09-03 14:30:01

我建议采用另一种方法,这是我在学年期间的C++和Java格式衍生出来的。

如果您有疑问,请初始化变量,如果这样做很便宜的话。

例如,在您的例子中,我想指出以下几点

代码语言:javascript
复制
//early on, *before any other possible use of $arr*!
$arr = array();
//do something else, remake $arr or not, whatever!
foreach ($arr as $a) {
    // Code stuffs
}

正确,简单,可读性强,一目了然。如果你以前不初始化$arr,你可能会想知道它是在哪里诞生的.特别是在你结束这个项目6个月后,需要一些调试!

票数 6
EN

Stack Overflow用户

发布于 2013-09-03 14:34:15

你总是可以做一个“速记”的功能

代码语言:javascript
复制
function checkArr($arr){
    return isset($arr) ? ((count($arr) > 0) ? $arr : array()) : array();
}

foreach(checkArr($arr) as $a){
    echo $a;
}

我的2美分。

票数 3
EN

Stack Overflow用户

发布于 2013-09-03 14:27:22

使用:

代码语言:javascript
复制
if ((!isset($arr)) || (!is_array($arr)) $arr = array();

foreach ($arr as $a) 
{
        // Code stuffs
}

我知道,if还在,但是你没有整个循环

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18594756

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档