【发布时间】:2020-10-24 14:02:07
【问题描述】:
我已经写了 IF 语句来检查变量是否为空:
if ( !empty( $firstname )) {
$data = array_merge( $data, array( 'first_name' => $firstname ));
}
if ( !empty( $lastname )) {
$data = array_merge( $data, array( 'last_name' => $lastname ));
}
if ( !empty( $email )) {
$data = array_merge( $data, array( 'email' => $email ));
}
// and there are even more statements then these 3 ...
我认为这太干了,并尝试使用 SWITCH 而不是 IF:
switch( true ){
case ( !empty( $firstname )):
$data = array_merge( $data, array( 'first_name' => $firstname ));
case ( !empty( $lastname )):
$data = array_merge( $data, array( 'last_name' => $lastname ));
case ( !empty( $email )):
$data = array_merge( $data, array( 'email' => $email ));
最后,即使其中一个变量为空,我也会合并所有这 3 个元素的数组。我做错了什么?
附:我不能做IF(!empty(a) && !empty(b) && !empty(c)),因为需要分别检查每个条件。
【问题讨论】:
-
$firstname是一个数组吗? -
据我所知,所有情况都需要休息,根据手册php.net/manual/en/control-structures.switch.php
-
另外,将所有这些检查移到一个 switch 语句中并不比 ifs 更干,你仍然把它们全部写出来。 DRY 表示 Don't Repeat Yourself,这意味着不要重复执行相同的 if 语句,不要有很多 if 语句
-
@Domaru 这就是 switch 语句的重点
-
您可以尝试一个简单的
compactxarray_filter解决方案,就像我在下面给出的那样!
标签: php switch-statement