我正在尝试完成个人资料设置的进度,该进度显示了用户完成个人资料设置的百分比。如果用户填写了一个字段,则他收到+15或+5,但是,如果用户未填写该字段,他将收到+0。
我做的代码真的很糟糕,重复多次,我想知道您是否知道更干净的方法。
if (!empty($user->avatar)) {
$avatar = 15;
} else { $avatar = 0; }
if (!empty($user->copertina)) {
$copertina = 15;
} else { $copertina = 0; }
// dati personali
if (!empty($user->name)) {
$name= 5;
} else { $name = 0; }
if (!empty($user->last_name)) {
$last_name = 5;
} else { $last_name = 0; }
[...]
if (!empty($user->biografia)) {
$biografia = 5;
} else { $biografia = 0; }
$personal = $avatar+$copertina+$name+$last_name+$sesso+$nascita;
$gaming = $steam+$battlenet+$xbox+$playstation+$switch+$uplay+$origin+$ds;
$social = $twitter+$facebook+$biografia;
$punti = $personal+$gaming+$social;
如何删除所有其他{$ variable = 0}
?
答案 0 :(得分:0)
您不能真正做到,因为您希望值是一个数字,而不是“未定义”。您可以像在此答案stackoverflow.com/questions/9651793/…中将变量初始化为0。
如果要对空变量进行类型比较,请检查php.net/types.comparisons。我只是将变量初始化为0,然后删除所有其他变量。
OR ...
修改$ user对象以将所有这些变量放在一个数组中($ key:$ value)。然后,您可以将数组全部初始化为0,然后对其进行修改。添加新的配置文件值很容易,而添加数组值则很快。
答案 1 :(得分:0)
此代码段:
if (!empty($user->avatar)) {
$avatar = 15;
}
else {
$avatar = 0;
}
在语义上等效于:
$avatar = (bool)$user->avatar * 15;
说明:
非空字段转换为true
,空字符串或null转换为false
因为我们进行乘法,所以php的true / false值将转换为1/0
15 * 1
或15 * 0
-取决于是否使用了字段。