Php 格式化条件if-else if并仅在一次内使用该方法
我正在开发一个应用程序,在部分代码中,我认为这看起来很难看,事实上我调用了一个API来检索数组数组,我使用一个变量来确定我是否需要调用表的所有元素或特定元素,就是这样Php 格式化条件if-else if并仅在一次内使用该方法,php,arrays,code-formatting,Php,Arrays,Code Formatting,我正在开发一个应用程序,在部分代码中,我认为这看起来很难看,事实上我调用了一个API来检索数组数组,我使用一个变量来确定我是否需要调用表的所有元素或特定元素,就是这样 foreach ($this->projects['projects'] as $project) { if (is_array($project)) { if (!isset($type_project)) { $this->_doProcess($project)
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\u数组
塞进相同的计算中,但是这会使它读起来有点迟钝,而且据我所知,您关心的只是消除额外的\u 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);
}
我发现上面的内容其实很容易理解,当分成三行时就更容易理解了,但是大众可能不同意这是否是一种好的做法。。。我发现自己偶尔也会这样做。您的循环中没有定义
$type\u项目
,这使您的情况的来源变得神秘。我已经修复了代码中的缩进,这是迈向更美观代码的第一步。您可以这样做:如果(!isset($type_project)| |($type_project==$project['type_project']){…调用您的函数…}