PHP / CI3-类型转换无法按预期使用布尔值

时间:2018-10-13 12:36:18

标签: php codeigniter

我将所有网站设置都保存在名为mh_settings的表中。 mh_setting表具有2个字段,即名称varchar(255)和类型varchar(255)。

在我的MY_Controller.php的核心文件夹和构造函数中,我将名称和密钥读入config_item(),如下所示:

    $appConfigOptions = $this->MH_settings_model->mh_get_configurations();

    if($appConfigOptions) {

        foreach($appConfigOptions as $appConfigOption)
            {
            $this->config->set_item($appConfigOption->key,$appConfigOption->value);
            }

    }

模型按如下方式获取配置项:

 class MH_settings_model extends CI_Model {

 protected $table;

 public function __construct() {
            $this->table = 'mh_settings';
 }

 public function mh_get_configurations() {
        $query = $this->db->get($this->table);
        return $query->result();
 }

 }

由于某种原因,即使我在FALSE的数据库中键入带有值的强制转换mh_site_up_public,似乎总是将其设为字符串。

    if(((boolean) $this->config->item('mh_site_up_public')) ==  FALSE) {
        show_error($this->config->item('mh_site_down_public_message'));
    }

我尝试了(布尔)而不是(布尔值)。

我尝试过==和===

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

由于表列是varchar,因此from translate import Translator import requests translator = Translator(from_lang = "zh", to_lang="en") translation = translator.translate("""猗與那與、置我鞉鼓。 奏鼓簡簡、衎我烈祖。 湯孫奏假、綏我思成。 鞉鼓淵淵、嘒嘒管聲。 既和且平、依我磬聲。 於赫湯孫、穆穆厥聲。 庸鼓有斁、萬舞有奕。 我有嘉客、亦不夷懌。 自古在昔、先民有作。 溫恭朝夕、執事有恪。 顧予烝嘗、湯孫之將""") print(translation) 将是带有文字文本mh_site_up_public的字符串。
非空字符串(或者如果它们仅包含“ 0”)将被视为true。

示例:

FALSE

演示:https://3v4l.org/aD0QY

您可以在the manual中了解有关布尔值的更多信息。

答案 1 :(得分:1)

字符串“ FALSE”与布尔值FALSE不同。

包含任何内容的字符串的计算结果为TRUE,因此类型转换可以按预期工作。

您可以将字段更改为使用INT(0表示false,1表示true),在这种情况下,您可以将代码更改为:

if(!$this->config->item('mh_site_up_public')) {
    show_error($this->config->item('mh_site_down_public_message'));
}

或者,如果您选择继续使用VARCHAR,则必须将代码更改为

if($this->config->item('mh_site_up_public') === 'FALSE') {
    show_error($this->config->item('mh_site_down_public_message'));
}