【问题标题】:CodeIgniter Database Rows Into Arrays To Use By Parser For Views Built-In TemplateCodeIgniter 数据库行成数组以供解析器用于视图内置模板
【发布时间】:2018-03-09 10:30:30
【问题描述】:

1) 我原来的settings桌子设计:

-------------------------------------------
site_name | site_slogan | site_url
-------------------------------------------
Company   | This rocks! | http://localhost/
-------------------------------------------

但是,我想重新设计,以便我可以明确地为每一行添加不同的数据类型,如 char(255) 或 varchar(512),或者将来可能是 INT:

-------------------------------
name        | value
-------------------------------
site_name   | Company
site_slogan | This rocks!
site_url    | http://localhost/
site_phone  | 123465798
-------------------------------

在我的控制器中,我想使用$this->parser->parse('page',$data);,但我不知道如何将我的数据库查询结果放入循环中的数组中,以便在我的视图中我可以像这样使用它们:

<a href="{site_url}">{site_name} - {site_slogan}</a>

编辑:

这是我收到的反馈中$data = $this->db->select("*")->from('settings')->get()->result_array(); 的结果。

Array
(
    [0] => Array
        (
            [name] => site_name
            [value] => My Name
        )

    [1] => Array
        (
            [name] => site_tagline
            [value] => My Tagline
        )

    [2] => Array
        (
            [name] => site_url
            [value] => My URL
        )

)

这就是我解析并使其在视图中可用的方法 {site_name} {site_tagline} {site_url}

$data = array(
   'site_name' => $data['0']['value'],
   'site_tagline' => $data['1']['value'],
   'site_url' => $data['2']['value']
);
$this->parser->parse('page', $data);

【问题讨论】:

  • 尝试将此存储结果到一个变量$result = $this->db->select("*")->from('settings')->get()->result_array(); 之后$data = array( 'site_url' =>$result['site_url'] ); 然后将此数据变量传递给您的视图模板
  • Message: Undefined index: site_url
  • 打印你的$result你得到了什么?
  • Message: Array to string conversion
  • Ofc 它会抛出,因为你试图echo 一个数组,尝试var_dump tho @RangkaKacang

标签: arrays database codeigniter parsing templates


【解决方案1】:

您可以将 $data 值分配给一个新数组并传递新数组:

foreach ($data as $key => $cfg) {
    $new_data[$cfg['name']] = $cfg['value'];
}
$this->parser->parse('page', $new_data);

【讨论】:

  • 这正是我要找的。从我的数据库中循环数据并将它们放入一个数组中,以便名称列中的行将用作模板解析器标记,然后分别返回匹配的值列。
  • 我已接受您的回答。我无法想象手动声明每个设置只是为了使它们可解析,如果有 100 行但感谢您的单行代码,我可以按照我想要的方式在逻辑上解决问题。顺便说一句,如果您向我解释 foreach ($a as $b => $c) { $d[$e['col1'] = $f['col2']]; } 用人类语言做什么,我将不胜感激?
  • 谢谢,很高兴能帮上忙 :)。实际上是foreach ($a as $b => $c) { $d[$c['col1'] = $c['col2']]; },在$a 数组的每次迭代中,我们分配一个名为$d 的新数组,其中包含一对键(来自$c['col1'] 值)和值(来自$c['col2'] 值)。
猜你喜欢
  • 2013-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多