php foreach id是否存在数组_请纠正这 5 个 PHP 编码小陋习

4ff93802b75231057d72f9cb968bb388.png

在做过大量的代码审查后,我经常看到一些重复的错误,以下是纠正这些错误的方法。

在循环之前测试数组是否为空

$items = [];

// ...

if (count($items) > 0) {

foreach ($items as $item) {

// process on $item ...

}

}

foreach以及数组函数 (array_*) 可以处理空数组。

·        不需要先进行测试

·        可减少一层缩进

$items = [];

// ...

foreach ($items as $item) {

// process on $item ...

}

将代码内容封装到一个 if 语句汇总

functionfoo(User $user) {

if (!$user->isDisabled()) {

// ...

// long process

// ...

}

}

这不是 PHP 特有的情况,不过我经常碰到此类情况。你可以通过提前返回来减少缩进。

所有主要方法处于第一个缩进级别

functionfoo(User $user) {

if ($user->isDisabled()) {

return;

}

// ...

// 其他代码

// ...

}

多次调用 isset 方法

你可能遇到以下情况:

$a = null;

$b = null;

$c = null;

// ...

if (!isset($a)|| !isset($b) || !isset($c)) {

throw newException("undefined variable");

}

// 或者

if (isset($a)&& isset($b) && isset($c) {

// process with $a, $b et $c

}

// 或者

$items = [];

//...

if (isset($items['user']) && isset($items['user']['id']) {

// process with $items['user']['id']

}

我们经常需要检查变量是否已定义,php 提供了 isset 函数可以用于检测该变量,而且该函数可以一次接受多个参数,所以一下代码可能更好:

$a = null;

$b = null;

$c = null;

// ...

if (!isset($a,$b, $c)) {

throw newException("undefined variable");

}

// 或者

if (isset($a, $b,$c)) {

// process with$a, $b et $c

}

// 或者

$items = [];

//...

if (isset($items['user'], $items['user']['id'])) {

// process with$items['user']['id']

}

echosprintf方法一起使用

$name = "John Doe";

echo sprintf('Bonjour %s', $name);

看到这段代码你可能会想笑,不过我的确这样写了一段时间,而且我仍然会看到很多这样写的!其实echo和sprintf并不需同时使用,printf就可以完全实现打印功能。

$name = "John Doe";

printf('Bonjour %s', $name);

通过组合两种方法检查数组中是否存在键

$items = [

'one_key' => 'John',

'search_key' => 'Jane',

];

if (in_array('search_key', array_keys($items))) {

// process

}

我经常看到的最后一个错误是in_array和array_keys的联合使用。所有这些都可以使用array_key_exists替换。

$items = [

'one_key' => 'John',

'search_key' => 'Jane',

];

if (array_key_exists('search_key', $items)) {

// process

}

我们还可以使用isset来检查值是否不是null。

if (isset($items['search_key'])) {

// process

}

697b1f6dca5e31453772e4fefd0b26e8.png

免责声明:本文内容转载自网络,其版权和著作权属于原作者。如果涉及侵权请尽快告知,我们将会在第一时间删除原文链接:https://segmentfault.com/a/1190000024487379

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/276119.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1161转进制(C语言)

一:题目 二:思路分析 1.首先该题目让我们使用递归求十进制转其他进制 2.其次,我们要知道十进制转换为其他进制怎么转换,以例题所给的数据为例 由此图可以看出,十进制转换为其他进制,是辗转相除法&#xf…

应对无协议脱欧 葡萄牙机场将为英籍旅客设快速通道

中新网1月18日电 据台湾《联合报》援引英媒报道,英国首相特蕾莎•梅的脱欧协议遭下院否决后,英国无协议脱欧的可能性变大。葡萄牙总理科斯塔17日表示,里斯本当局正对机场开设特殊通道进行规划,使英国旅客无论英国最后如何脱欧&…

6轮字节前端校招面试经验分享

大家好,我是若川。最近金三银四,今天分享一篇字节前端校招面试经验的轻松好文,相信看完会有所收获。也欢迎点击下方卡片关注或者星标我的公众号若川视野因为我错过了2020年的秋招(ps: 那时候连数据结构与算法都还没学完&#xff0…

斥资近1亿港元,小米二次回购

1月21日消息,小米集团发布公告称,公司于1月18日回购了984.96万股B类普通股股票,占已发行股份0.041%,平均价为每股B类股10.1527港元,总计斥资近1亿港元。 这也是继1月17日首次回购后,小米集团连续两日出手进…

ios macos_设计师可以从iOS 14和macOS Big Sur中学到什么?

ios macos重点 (Top highlight)With the introduction of iOS 14 and macOS Big Sur, we are the witness of the next big thing in UI Design. Changes are not so revolutionary like in iOS 7 years before, but they undoubtedly present the trend UI Designers will fol…

网页设计简约_简约网页设计的主要功能

网页设计简约重点 (Top highlight)Minimalism is synonymous with simplicity. Not quite. As the name suggests, minimalism is definitely not about opulent design. But the assumption that minimalism is design-less and plain is also wrong. Minimalism is simple ye…

Expo 2010 Japan Pavilion

^_^转载于:https://www.cnblogs.com/mmmhhhlll/archive/2010/04/16/1713680.html

深度对比学习Vue和React两大框架

作为国内应用最广的两个框架,Vue 和 React 是前端必须掌握的内容,也是面试的重点。但大多数读者都只擅长其中一个框架,当面试涉及到另一个框架的内容时,就答不好了。比如虚拟dom,两个框架中都有应用,面试官…

java rwd_面向任务的设计-不仅限于Mobile First和RWD

java rwdWe already know that majority of solutions should start with a design for smartphones, we know that all websites should be responsive. Now, it’s time to think about holistic solutions with specific tasks adapted to all kind of devices.我们已经知道…

HOJ 1015 Nearly prime numbers

代码 //Nearly prime number is an integer positive number for which it is possible //to find such primes P1 and P2 that given number is equal to P1*P2.#include <stdio.h>#include <stdlib.h>#include <math.h>//decide n whither is a nearly pri…

「前端工程化」该怎么理解?

大家好&#xff0c;我是若川。今天分享一篇「前端工程化」的好文。非广告&#xff0c;请放心阅读。可点击下方卡片关注我&#xff0c;或者查看系列文章。今天发文比较晚&#xff0c;以往都是定时早上7:30发文&#xff0c;也不知道是不是有点早。一.什么是前端工程&#xff1f;一…

figma下载_Figma和ProtoPie中的原型制作,比较

figma下载第1部分 (Part 1) Prototyping has never had such a high profile with a whole host of tools that now give you varying ability to realize your designs beyond their static UI and into a working usable thing. It’s fair to say that prototyping within t…

「前端组件化」该怎么理解?

大家好&#xff0c;我是若川。今天分享一篇关于「前端组件化」的好文。欢迎点击下方卡片关注我。以下是正文~这里我们一起来学习前端组件化的知识&#xff0c;而组件化在前端架构里面是最重要的一个部分。讲到前端架构&#xff0c;其实前端架构中最热门的就有两个话题&#xff…

大屏设计的视觉统一_视觉设计中的统一

大屏设计的视觉统一视觉设计的统一性是什么&#xff1f; (What is unity in visual design?) The concept of unity in visual design means a group of elements working together to create a greater whole. It means, as the clich goes: A whole that is greater than th…

跟着官方文档能学懂React Hooks就怪了

大家好&#xff0c;我是若川。今天分享一篇关于「React Hooks」的好文。欢迎点击下方卡片关注我。以下是正文~回想下你入门Hooks的过程&#xff0c;是不是经历过&#xff1a;类比ClassComponent的生命周期&#xff0c;学习Hooks的执行时机慢慢熟练以后&#xff0c;发现Hooks的执…

origin图上显示数据标签_Origin(Pro):寒假都结束了,这个图还是不会画?【数据绘图】...

寒假前给大家分享了一个图&#xff0c;大家要的教程来了。【数据绘图】好图分享&#xff1a;寒假&#xff1f;不存在的&#xff01;​mp.weixin.qq.com绘图思路&#xff1a;左侧起止时间&#xff1a;散点图&#xff0c;交换XY坐标轴&#xff1b;中间的连线为Drop Lines&#xf…

可以激发设计灵感的音乐_建立灵感库以激发您的创造力

可以激发设计灵感的音乐I often find a lot of inspiration from work I see while scrolling social media. Saving art or images that inspire you allows you to build a library of resources to draw from whenever you’re working on a project.在滚动社交媒体时&#…

若川知乎问答:做前端感觉很吃力怎么办?

前些日&#xff0c;我发了一篇推文《做前端感到越来越吃力了&#xff01;怎么办&#xff1f;》&#xff0c;虽然是推广&#xff0c;但阅读量却很高&#xff0c;推广标题我们大概率不能改&#xff0c;感觉骗了大家&#xff0c;掉粉挺多人。写稿的人可能就是看到了知乎这个问答。…

d3 制作条形图_停止制作常见的坏条形图的5个简单技巧

d3 制作条形图Bar charts were probably the first type of chart you were ever introduced to in first grade. Their simplicity makes them a standard in visualizing data, but it is its accessibility that leads visualizers to often be careless with bar charts.乙…

SVN之使用原则

以下是我起草的部门SVN规范里原则的一部分。文件提交时要求必须提交注释&#xff0c;注明相关修改信息&#xff0c;例如bug号、任务描述等。具体内容可采用约定或者设置的形式。你所提交的改变将体现给其他开发者&#xff0c;要明白提交的后果&#xff0c;提交之前要慎重。代码…