繁体   English   中英

简化此PHP代码?

[英]simplify this PHP code?

有任何想法吗? 在第二种情况下$ v是一个数组,我可以做is_array($ v),但无论如何我都必须重复if / else

foreach(array('city', 'location') as $f) {
        $ors[$f] = array();

        if (!isset($_POST[$f])) continue;

        $v = $_POST[$f];
        if (isset($df[$f][$v])) {
                array_push($ors[$f], $df[$f][$v]);
        }
        else {
                security_error();
        }
}

foreach(array('age', 'sex') as $f) {
        $ors[$f] = array();

        if (!isset($_POST[$f])) continue;

        foreach($_POST[$f] as $v) {
                if (isset($df[$f][$v])) {
                        array_push($ors[$f], $df[$f][$v]);
                }
                else {
                        security_error();
                }
        }
}

对两个循环都使用三元条件运算符:

$result = isset($df[$f][$v]) ? array_push($ors[$f], $df[$f][$v]) : security_error();

和/或功能:

function pushIfSetOrSecurityError($source, $target, $key) {
    $result = isset($source[$key]) ? array_push($target, $source[$key]) : security_error();
}
function pushIfSetOrSecurityError($source, $target, $key) {
        if (isset($source[$key]))
                array_push($target, $source[$key]);
        else
                security_error();
}

foreach(array('city', 'location') as $f) {
        $ors[$f] = array();
        if (isset($_POST[$f]))
                pushIfSetOrSecurityError($df[$f], $ors[$f], $_POST[$f]);
}

foreach(array('age', 'sex') as $f) {
        $ors[$f] = array();
        if (isset($_POST[$f]))
                foreach($_POST[$f] as $v)
                        pushIfSetOrSecurityError($df[$f], $ors[$f], $v);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM