php - 避免由于未定义变量错误而导致重复变量
问题描述
我正在尝试制作个人资料完成进度,它显示了用户完成个人资料设置的百分比。如果用户填写了一个字段,他会收到 +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}
?
解决方案
这个片段:
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
- 取决于您的字段是否被使用。
推荐阅读
- c# - 如何通过图像对象检测从张量流模型输出中读取 C# 中 4 维数组的结果
- python - 如何在 Python 中对字母数字值进行排序?
- javascript - 使用jQuery在元素数组中查找元素的位置
- ios - 同步排队 异步操作
- datetime - 获取过去 2 个月和当前月份的数据
- ruby-on-rails - 在 Rails 5 中使用 smarter_csv 引用列号
- android - 带有 com.android.future.usb 的 Android Pie 模拟器
- rest - 使用路径变量测试 Chi 路线
- java - 错误 java.lang.ArrayIndexOutOfBoundsException:2
- c++ - C++ 将字节从 char* 传递到 BYTE*