编辑代码

<?php

class Language {
    public $id;
    public $Code;

    public function __construct($id, $code) {
        $this->id = $id;
        $this->Code = $code;
    }
}

// 创建对象数组
$lan = [
    new Language("1", 'en'),
    new Language("2", 'hk'),
];


 function fieldByLanguage(&$db, $fx, $label, $sql = NULL,$lan) {//ticket:1129642 modify by grace 2021/12/22
		$str = "";
        $index = 0;
        $lang = $lan;
		foreach ($lan as $lang)
		{
            $index++;
			if (strlen($str) > 0) $str.= ", ";
			
			$updateFieldsArr = array('TenderType', 'PropertyManagerSurname', 'PropertyManagerFirstName', 'TenderLiftConsultant','SuccessfulContractType');
			if(in_array($label, $updateFieldsArr))
			{
				switch($label)
				{
				case 'TenderType':
					$str .= "tt.Name_val AS `{$label}_{$lang->Code}`";
					break;
				case 'PropertyManagerSurname':
					$str .= "pm.Surname_val AS `{$label}_{$lang->Code}`";
					break;
				case 'PropertyManagerFirstName':
					$str .= "pm.FirstName_val AS `{$label}_{$lang->Code}`";
					break;
				case 'TenderLiftConsultant':
					$str .= "tlc.Name_val AS `{$label}_{$lang->Code}`";
					break;
				case 'SuccessfulContractType':
					$str .= "sct.Name_en AS `{$label}_{$lang->Code}`";
					break;
				}
			}
			//End
			else if (strlen($sql) > 0) 
			{
				if(is_string($fx) || $fx==NULL)
				{
					if($fx == NULL || strtolower($fx) == "null")
						$str.= sprintf($sql, "NULL", "AS `{$label}_{$lang->Code}`");
					else 
						$str.= sprintf($sql, "{$fx}.`Val_{$lang->Code}`", "AS `{$label}_{$lang->Code}`");
				}
				else if(is_array($fx)) {
					if(isset($fx[2]) && $fx[2]){
						if($lang->Code == 'en'){
							$str.= sprintf($sql, "{$fx[0]}.`{$fx[1]}_en`", "AS `{$label}_{$lang->Code}`");
						}else{
							$str.= sprintf($sql, "{$fx[0]}.`{$fx[1]}_local`", "AS `{$label}_{$lang->Code}`");
						}
					}else{
						$str.= sprintf($sql, "{$fx[0]}.`{$fx[1]}_val`", "AS `{$label}_{$lang->Code}`");
					}
				}
			} 
			else 
			{
				if(strlen($label) > 0)
				{
					if(is_string($fx) || $fx==NULL)
					{
						if($fx == NULL || strtolower($fx) == "null")
							$str.= " NULL AS `{$label}_{$lang->Code}`";
						else
							$str.= "{$fx}.`Val_{$lang->Code}` AS `{$label}_{$lang->Code}`";
					}
					elseif(is_array($fx)){
						if(isset($fx[2]) && $fx[2]){
							if($lang->Code == 'en'){
								$str.= "{$fx[0]}.`{$fx[1]}_en` AS `{$label}_{$lang->Code}` ";
							}else{
								$str.= "{$fx[0]}.`{$fx[1]}_local` AS `{$label}_{$lang->Code}` ";
							}
						}else{
							$str.= "{$fx[0]}.`{$fx[1]}_val` AS `{$label}_{$lang->Code}` ";
						}
					} 
				}
				else 
				{
					if(is_string($fx) || $fx==NULL)
					{
						if($fx == NULL || strtolower($fx) == "null")
							$str.= " NULL ";
						else
							$str.= "{$fx}.`Val_{$lang->Code}` ";
					}
					elseif(is_array($fx)){                       
						if(isset($fx[2]) && $fx[2]){
							if($lang->Code == 'en'){
								$str.= "{$fx[0]}.`{$fx[1]}_en` ";
							}else{
								$str.= "{$fx[0]}.`{$fx[1]}_local` ";
							}
						}else{
							$str.= "{$fx[0]}.`{$fx[1]}_val` ";
						}
					}
				}
			}
		}
		return $str;
	}


    $a = fieldByLanguage($db, array('st','Name',$langEnLocal=true), 'CountryName', "(SELECT %s FROM site s JOIN structure st ON s.StructureID = st.id  ) %s",$lan);
    $b = fieldByLanguage($db, array('st','Name',$langEnLocal=true), 'CountryName',null,$lan); 

    $c=fieldByLanguage($db, array('re','Name',$langEnLocal=true), 'Region', "GROUP_CONCAT(DISTINCT CONVERT(%1\$s USING utf8) ORDER BY re.id SEPARATOR ',') %2\$s",$lan);
    echo $c;
    //echo $b;
    echo "222";