Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 格式化条件if-else if并仅在一次内使用该方法_Php_Arrays_Code Formatting - Fatal编程技术网

Php 格式化条件if-else if并仅在一次内使用该方法

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)

我正在开发一个应用程序,在部分代码中,我认为这看起来很难看,事实上我调用了一个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\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']){…调用您的函数…}