格式化条件 if else if 并且只使用一次里面的方法
format condition if else if and use the method inside only one time
我正在开发一个应用程序,在部分代码中,我认为这看起来很难看,实际上我调用了一个 API 来检索数组的数组,并且我使用一个变量来确定如果我需要调用 table 的所有元素或特定元素,那么这里是
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);
}
}
}
事实上,您可以更简洁地获得 single-statement 圣杯:
foreach ($this->projects['projects'] as $project) {
is_array($project)
&& (!isset($type_project) || $type_project == $project['type_projet'])
&& $this->_doProcess($project);
}
我发现上面的内容实际上非常可读,当分成三行时更是如此,但群众可能不同意这是否是一个好的做法......我发现自己偶尔会这样做。
我正在开发一个应用程序,在部分代码中,我认为这看起来很难看,实际上我调用了一个 API 来检索数组的数组,并且我使用一个变量来确定如果我需要调用 table 的所有元素或特定元素,那么这里是
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);
}
}
}
事实上,您可以更简洁地获得 single-statement 圣杯:
foreach ($this->projects['projects'] as $project) {
is_array($project)
&& (!isset($type_project) || $type_project == $project['type_projet'])
&& $this->_doProcess($project);
}
我发现上面的内容实际上非常可读,当分成三行时更是如此,但群众可能不同意这是否是一个好的做法......我发现自己偶尔会这样做。