这个“if”语句可以简化吗?

时间:2017-01-27 15:15:07

标签: php if-statement

我有一个if语句,用于验证<img>标记何时缺少尺寸(width / height)或是否为空(width="" / { {1}}),例如:

height=""

以下<img src="https://placehold.it/100x50" alt="Blank width/height" width="" height=""> <img src="https://placehold.it/100x50" alt="Blank width" width=""> <img src="https://placehold.it/100x50" alt="Blank height" height=""> <img src="https://placehold.it/100x50" alt="No width/height"> 声明对我有用。但是,我想知道是否可以简化我在下面使用的逻辑。 Here's the link to the full source code

if

3 个答案:

答案 0 :(得分:0)

$search = ['width','height'];
foreach ($search as $value) {
    if(!in_array($value, $img[1]) || (in_array($value, $img[1]) && in_array('""', $img[2])) {
        // code away
    }
}

或者您总是可以使用jQuery来检查已定义的元素属性,甚至可以使用css定义宽度和高度,而不是使用内联样式。

答案 1 :(得分:0)

是,导出函数中的所有检查,在其中检查每个条件并返回相应的值。俗话说:

  

提前失败,快速失败

if(illegalImage($img)) {
// Code here ...
}

private function illegalImage(array $imgData) {
    // check the array since we're in a validation function, so be thorough
    if (count($imgData) < 3) { // or whatever check makes sense here
        return true;
    }
    if (!in_array('width', $imgData[1])) {
        return true;
    }
    if (!in_array('height', $imgData[1])) {
        return true;
    }
    /* you'd have failed earlier if 'width' or 'height' was missing
     * so no need of complicated boolean expressions here
     */
    if (in_array('""', $img[2])) {
        return true;
    }

    return false;
}

答案 2 :(得分:0)

通过执行以下操作,我能够简化逻辑:

if ( ! in_array( 'width|height', $img[1] ) || in_array( '""', $img[2] ) ) {
    # Code here...
}