【问题标题】:PHP Array Foreach() Pass Variable From Database to CodeIgniter Template ParserPHP Array Foreach() 将变量从数据库传递到 CodeIgniter 模板解析器
【发布时间】:2018-03-12 08:53:58
【问题描述】:

这是我的数据库表(之前我使用的是垂直设计,但由于缺乏数据类型支持,我改为水平设计):

+-----------+-------------------+
| site_name | site_url          |
+-----------+-------------------+
| Awesome   | http://localhost/ |
+-----------+-------------------+

控制器:

public function index() {
   $data = $this->db->select("*")->from('settings')->get()->result_array();
   $new_data = $data['0'];
   $this->parser->parse('default/header.php', $new_data);
}

查看:

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

上面的$data会打印出来:

Array
(
    [0] => Array
        (
            [site_name] => Awesome
            [site_url] => http://localhost/
        )
)

我认为我的控制器的代码看起来很愚蠢。有没有更好的方法来循环使用foreach() 自动传递键和值,以便我可以将它与 CodeIgniter 的模板解析器一起使用,例如 {site_name} {site_url}

更多参考,您可以查看this question,它是相关的,但不是重复的。

【问题讨论】:

    标签: php arrays codeigniter parsing foreach


    【解决方案1】:

    试试这个

    控制器

    public function index() {
      $settings = $this->db->get('settings')->first_row();
      $this->parser->parse('default/header.php', $settings);
    }
    

    查看

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

    【讨论】:

      【解决方案2】:

      您当前的代码将一直有效,直到您有一行,如果您有很多行,这段代码将无法在这种情况下工作,您需要一些循环,例如 foreach。

      您可以将数据库操作保留在模型中,而不是控制器中。

      否则看起来不错不傻。每个人都有自己编写代码的方式。

      【讨论】:

      • 好的,谢谢,但是谁在没有适当解释的情况下对我投了反对票,只是因为我需要意见......我需要循环列而不是行,你有什么想法吗?是的,关于我将这样做的模型,我只是在测试并且仍处于学习阶段并以此作为示例。顺便说一句,我的表将只有 1 行,因为它是一个用于存储我的设置/配置的水平表。 tq
      • 每个人对问题都有自己的看法,请忽略它们。他们不能禁止您提出问题,他们可以对您投反对票。在stackoverflow中是正常的
      • 没有必要循环列,只要您运行查询,您就会得到整行,因此不会有任何循环。
      • @vikrant 您可以获得suspended 有几个原因(由版主和/或 Stack Exchange 员工手动),如果您的帖子没有得到很好的接收,也会自动禁止提问/回答(全部或他们中的大多数人都投了反对票)。
      • ok tq vikrant 和@chade_ 这听起来很吓人.. 看来这不是新手提问的地方,我会找到替代方案...
      猜你喜欢
      • 2011-12-21
      • 2013-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-10
      • 2018-02-16
      • 1970-01-01
      相关资源
      最近更新 更多