如何减少给定PHP代码段中的缩进级别

时间:2015-09-15 14:19:09

标签: php coding-style refactoring

如何重构这段代码,将缩进级别降低一级? 我只是想知道在PHP中是否有可能以不同的方式编写此代码,只有一个级别的缩进。

代码:

private function isArrayMatchingCriteria(array $array) {
    foreach($array as $element) {
        if (! $this->isElementMatchingCriteria($element) {
            return false;
        }
    }
    return true;
}

请注意:

  • 此代码并不总是遍历所有数组元素 - 因此count + array_filter / array_map的组合不一样
  • 通过引入用作标志的专用对象属性很容易,但我正在寻找一种不引入新属性的方法

2 个答案:

答案 0 :(得分:0)

如果您只想删除缩进,可以使用:

private function isArrayMatchingCriteria(array $array) {
    foreach($array as $element) {
        if (!$this->isElementMatchingCriteria($element)) return false;
    }
    return true;
}

答案 1 :(得分:0)

使用array_map,如下所示:

class MyClass
{
    private function isElementMatchingCriteria( $element )
    {
        // DUMMY, replace with actual code
        if ( $element == "foo" || $element == "bar" ) {
            return true;
        } else {
            return false;
        }
    } // end is Element Matching Criteria

    public function isArrayMatchingCriteria(array $array)
    {
        $results = array_map( array( $this, "isElementMatchingCriteria"), $array );
        $isMatch = true;
        foreach ( $results as $result ) {
            $isMatch = $isMatch && $result;
        } // end foreach
        return $isMatch;
    } // end function isArrayMatchingCriteria
} // end MyClass

$myClass = new MyClass();
$array = array( "foo", "bar", "baz" );
$result = $myClass->isArrayMatchingCriteria( $array );
print_r( $result );