<?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";