如果以正确的方式说明,我如何完成此php



i php中有50个变量。我想检查它们每个,如果它们为true,则在称为$point的变量中添加2点。我是新来的,所以我写了几行,但我认为我做错了。

$strenght_point = 0;
if($f_name){$strenght_point++;} 
if($l_name){$strenght_point + 2;}   
if($full_name){$strenght_point + 2;}    

我该怎么做正确的方式。谢谢

更新我的完整功能在这里...它的CodeIgniter控制器功能希望你们现在很好

功能强度_scale(){

        $user_id = $this->uri->segment(2);
        $user_name = $this->uri->segment(3);

            $query = $this->db->get_where('aoa_user', array('id' => $user_id, 'username' => $user_name));       
            foreach ($query->result() as $row){ 
                $f_name = $row->f_name;             
                $l_name = $row->l_name;             
                $full_name = $row->full_name;               
                $username = $row->username;             
                $alias_name = $row->alias_name;             
                $gender = $row->gender;             
                $country = $row->country;               
                $avatar = $row->avatar;             
                $cover_photo = $row->cover_photo;   
                $email = $row->email;   
                $skill = $row->skill;   
                $other_skills = $row->other_skills; 
                $ex_time = $row->ex_time;   
                $about = $row->about;   
                $company = $row->company;   
                $company_position = $row->company_position; 
                $phone = $row->phone;   
                $facebook = $row->facebook; 
                $facebook_page = $row->facebook_page;   
                $google_plus = $row->google_plus;   
                $twitter = $row->twitter;   
                $youtube = $row->youtube;   
                $skype = $row->skype;   
                $linkedin = $row->linkedin;                     
                $website = $row->website;   
                $latitude = $row->latitude; 
                $longitude = $row->longitude;   
                $verification = $row->verification; 
            }
        $strength_point = 0;
        if($f_name){$strength_point++;} 
        if($l_name){$strength_point + 2;}   
        if($full_name){$strength_point + 2;}    
}

用变量创建一个数组。

https://3v4l.org/fyttg

$arr = array("f_name" => true, "l_name" => true, "full_name" => true);
$strength=0;
Foreach($arr as $var){
   if($var) $strength = $strength+2;
}
Echo $strength;

正如rizier123所说,您需要更换强度变量。您可以编写一个简单的功能,该功能可以接受您的50个变量之一并返回强度增量:

function defineStrength($param)
{
    if ($param) {
        return 2;
    }
    return 0;
}
$strength = 0;
$f_name = true;
$l_name = false;
$full_name = false;
$strength += defineStrength($f_name);
$strength += defineStrength($l_name);
$strength += defineStrength($full_name);

然而,阵列将是一种更好的方法,正如安德烈亚斯(Andreas)提到的那样。

在您的问题更新中,您说您使用Codeigniter。如文档所述,您可以将查询结果作为纯数组返回。因此您可以这样进一步发展:

function defineStrengthFromArray(array $row)
{
    $strength = 0;
    foreach ($row as $param) {
        $strength += defineStrength($param);
    }
    return $strength;
}
foreach ($query->result_array() as $row){
    $strength = defineStrengthFromArray($row);
}

最新更新