如何解决如果不是,则格式化条件,并且仅在一次内使用该方法
我正在开发应用程序,并且在代码的一部分中,我认为这看起来很丑陋,实际上我调用API来检索数组数组,并且使用变量来确定是否需要调用该表的所有元素或特定元素上的元素,所以在这里是
foreach ($this->projects['projects'] as $project) {
if (is_array($project)) {
if (!isset($type_project)) {
$this->_doProcess($project);
}
elseif (isset($type_project) && ($type_project == $project['type_projet'])){
$this->_doProcess($project);
}
}
}
是否有一种方法可以一次调用doProcess并考虑条件的标准?
解决方法
您可以很容易地组合条件,并且要理解,在!isset($x) || ...
之后评估的任何事物都将给定isset($x)
。如下:
foreach ($this->projects['projects'] as $project) {
if (is_array($project)) {
if (!isset($type_project) || $type_project == $project['type_projet'])) {
$this->_doProcess($project);
}
}
}
您也可以将is_array
放入相同的评估中,但是这会使阅读变得更晦涩难懂,而且据我所知,您所关心的只是消除多余的_doProcess()
。在任何情况下,只要明确说明选项即可:
foreach ($this->projects['projects'] as $project) {
if (is_array($project) && (!isset($type_project) || $type_project == $project['type_projet']) ) {
$this->_doProcess($project);
}
}
}
实际上,您可以使单语句的圣杯得分更加简洁:
foreach ($this->projects['projects'] as $project) {
is_array($project)
&& (!isset($type_project) || $type_project == $project['type_projet'])
&& $this->_doProcess($project);
}
我发现上面的内容实际上可读性强,当分成三行时更是如此,但是群众可能会认为这是否是一种好习惯……我发现自己偶尔这样做。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。