我试图让我的用户选择以更多语言加载文章。我正在尝试显示用户尚未选择的可用语言列表,并在顶部选择已选择的语言供用户从他们的选项中删除。
这是我到目前为止所得到的:
class Options_model extends CI_Model{
protected $options = array(
'en' => 'English',
'it' => 'Italiano',
'fr' => 'Français',
'de' => 'Deutsch',
'es' => 'Español',
'no' => 'Norsk',
'ru' => 'Русский язык',
'ar' =>'العربية',
'zu' => '中文',
);
public function my_lang($user_id) {
$sql =
"SELECT lang_id
FROM languages
WHERE user_id = :user_id";
$stmt = $this->db->conn_id->prepare($sql);
$stmt->bindParam(':user_id', $user_id);
$stmt->execute();
return $result = $stmt-> fetch();
}
public function languages($result) {
return array_diff_key($this->options, $result);
}
}
并在我的视图文件中(为了测试,我将在控制器运行时将其中的一些放入控制器中,并添加链接以删除语言并从我的数据库中删除表)。
$mylang = $this->Options_model->my_lang($user_id);
print_r($mylang);
foreach ($mylang as $value) {
echo "Value: $value<br />\n";
}
$options = $this->Options_model->languages($mylang);
echo form_dropdown('languages', $options);
我的数据库结构如下:
| id | user_id | lang_id |
|------------------------|
| 1 | 12 | en |
|————————————————————————|
当我尝试返回我的 $myLang 变量时,我得到的只是“数组”。我无法让我的 array_diff_key 函数工作,并且 print_r 看起来完全不像我想象的那样。我只想让自己回到我的图形设计舒适区,并消除这个后端头痛。有没有更简单的方法来做到这一点?或者我应该如何编码用户选项而不看起来像个白痴?