首页 > 解决方案 > 避免由于未定义变量错误而导致重复变量

问题描述

我正在尝试制作个人资料完成进度,它显示了用户完成个人资料设置的百分比。如果用户填写了一个字段,他会收到 +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}

标签: phpvariablesoptimization

解决方案


这个片段:

if (!empty($user->avatar)) {
 $avatar = 15;
} 
else {
 $avatar = 0;
}

在语义上等价于:

$avatar = (bool)$user->avatar * 15;

解释:

  1. 非空字段被转换为true空字符串或 null 被转换为false

  2. 因为我们做乘法 php true/false 值被转换为1/0

  3. 因此,在乘法之后,您得到15 * 115 * 0- 取决于您的字段是否被使用。

推荐阅读