我怎麼能改善以下語句:更好的方法來寫PHP
if(!empty($var1) && !empty($var2) && !empty($var3) && !empty($var4) && !empty($var5) && !empty($var6) && !empty($var7)....)
是否有一個PHP函數,允許邏輯條件鏈接?
感謝您的建議。
我怎麼能改善以下語句:更好的方法來寫PHP
if(!empty($var1) && !empty($var2) && !empty($var3) && !empty($var4) && !empty($var5) && !empty($var6) && !empty($var7)....)
是否有一個PHP函數,允許邏輯條件鏈接?
感謝您的建議。
你也可以嘗試這種方式,
$not_empty = false;
$required_fields = [$var1,$var2,$var3,$var4,$var5,$var6,$var7];
foreach ($required_fields as $f) {
if (!empty($f)) {
$not_empty = true;
}else{
$not_empty = false;
break;
}
}
if($not_empty){
//good to go
}
謝謝您的回覆! – alvarofvr
更可讀的,你可以把「羣體」(可能是一個或多個)的條件,並把它使多行:
if(!empty($var1) &&
!empty($var2) &&
!empty($var3) &&
!empty($var4) &&
!empty($var5) &&
!empty($var6) &&
!empty($var7) ...) {
你還可以做什麼用issets和取消設置,你可以縮短:
if(!isset($var1) &&
!isset($var2) &&
!isset($var3) &&
!isset($var4) &&
!isset($var5) &&
!isset($var6) &&
!isset($var7) ...) {
到
if(isset($var1, $var2, $var3, $var4, $var5, $var6, $var7)) {
我會創建一個變量數組來檢查並循環查看它們是否爲空。
$check = array(
'var1',
'var2',
'var3',
'var4',
'var5',
'var6',
'var7',
);
$empty = false;
foreach($check as $value){
if(empty(${$value})){
$empty = true;
break;
}
}
if($empty){
// there is an empty value
}
謝謝你的迴應! – alvarofvr
我想你可以做這樣的事情:
$n = 7;
$empty = false;
foreach(range(1, $n) as $v)
{
if(empty(${'var' . $v})){
$empty = true;
}
}
if(!$empty){
echo 'no empty variables';
}
感謝您的回覆! – alvarofvr
迄今已提交的答案可以編寫成一個小工具功能。這是一個未經測試的函數,它接受可變數量的參數。
function all_empty() {
// Grab the number of arguments passed to the function.
$numberOfArguments = func_num_args();
$arguments = func_get_args();
$output = true;
// Return if nothing was passed.
if($numberOfArguments == 0) {
return;
}
// Check each passed argument, break on failure.
foreach($arguments as $argument) {
if(!empty($argument)) {
$output = false;
break;
}
}
return $output;
}
利用同樣的方法,我們可以寫一個叫none_empty
功能:
function none_empty() {
// Grab the number of arguments passed to the function.
$numberOfArguments = func_num_args();
$arguments = func_get_args();
$output = true;
// Return if nothing was passed.
if($numberOfArguments == 0) {
return;
}
// Check each passed argument, break on failure.
foreach($arguments as $argument) {
if(empty($argument)) { // This is the only difference.
$output = false;
break;
}
}
return $output;
}
使用示例:
if(all_empty($var1, $var2, $var3)) { /* They're all empty */ }
if(!all_empty($var1, $var2, $var3)) { /* Some of them aren't empty */ }
if(none_empty($var1, $var2, $var3)) { /* They all have a value */ }
if(!none_empty($var1, $var2, $var3)) { /* Some of them are empty */ }
而且因爲我們寫的功能,能夠拍攝可變數量的參數,這也是可能的:
if(all_empty($var1, $var2, $var3, $var4, $var5, ...)) { }
謝謝你的迴應! – alvarofvr
也許這個解決方案:https://stackoverflow.com/a/13329035/1824143
function has_empty(array $array)
{
return count($array) != count(array_diff($array, array('', null, array())));
}
$vars = [$var1,$var2,$var3,$var4,$var5,$var6,$var7];
if(!has_empty($vars))
{
...
}
你能保持你的變量數組和迭代,以確定是否有任何項目爲空... – user1859022