任何想法? 在第二种情况下,$ 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();
}
}
}
答案 0 :(得分:2)
对两个循环使用三元条件运算符:
$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();
}
答案 1 :(得分:1)
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);
}