1个函数中的2个数组。在Smarty中按选定数组排序数组项

时间:2014-05-15 05:01:53

标签: php smarty

新问题:

我使用了这些代码:

function FetchCategories(){
    // Get categories array
    $categories = $this->dbh->getAll("select id,category,categoryen from ".TABLE_PREFIX."categories order by category,categoryen", DB_FETCHMODE_ASSOC);
    return $categories;
}

这些代码根据类别订购 categoryen 。二阶数组 categoryen 并不重要。我想订购:

如果类别请求,则按类别排序;

如果 categoryen 请求,请按 categoryen 排序。

有什么方法可以解决这个问题吗?


陈旧,已解决的问题:

我在数据库中有两个类别名称短语。他们的专栏标题是"类别"和" categoryen"。我的PHP代码是这样的:

{if LANGUAGE_ID eq "TR"}
                          <option value=\"{$categories[i].id}\">{$categories[i].category}</option>
{/if}
{if LANGUAGE_ID eq "EN"}
                          <option value=\"{$categories[i].id}\">{$categories[i].categoryen}</option>
{/if}

但我有旧功能,只支持类别短语

function FetchCategories(){         // Get categories array         $categories = $this->dbh->getAll("select id,category from ".TABLE_PREFIX."categories order by category", DB_FETCHMODE_ASSOC);       return $categories;     }

如何添加&#34; categoryen&#34;支持这个FetchCategories函数?

2 个答案:

答案 0 :(得分:1)

你可以这样简单地做到这一点:

function FetchCategories(){
    // Get categories array
    $categories = $this->dbh->getAll("select id,categorytr,categoryen from ".TABLE_PREFIX."categories order by categorytr, categoryen", DB_FETCHMODE_ASSOC);
    return $categories;
}

或作为替代方案:

function FetchCategories(){
    $lang = strtolower(LANGUAGE_ID)   
    // Get categories array
    $categories = $this->dbh->getAll("select id,category{$lang} from ".TABLE_PREFIX."categories order by category{$lang}", DB_FETCHMODE_ASSOC);
    return $categories;
}

答案 1 :(得分:1)

回答已更改的问题:

您可以将参数传递给函数

function FetchCategories($currentLang){
   $order = 'category';
   if ($currentLang == 'en') {
      $order = 'categoryen';
   }

    // Get categories array
    $categories = $this->dbh->getAll("select id,category,categoryen from ".TABLE_PREFIX."categories order by {$order}", DB_FETCHMODE_ASSOC);
    return $categories;
}

然后你需要运行你的函数fetchCategories($lang),其中$ lang是你当前的语言

或者如果你可以在你的函数中使用LANGUAGE_ID常量,你可以这样做:

function FetchCategories(){
   $order = 'category';
   if (LANGUAGE_ID == 'en') {
      $order = 'categoryen';
   }

    // Get categories array
    $categories = $this->dbh->getAll("select id,category,categoryen from ".TABLE_PREFIX."categories order by {$order}", DB_FETCHMODE_ASSOC);
    return $categories;
}