【问题标题】:CodeIgniter parsing multidemensional arraysCodeIgniter 传递多维数组
【发布时间】:2012-10-12 08:50:25
【问题描述】:

在这个http://codeigniter.com/user_guide/libraries/parser.html 教程中,我们有这个多维数组

$data = array(
          'blog_title'   => 'My Blog Title',
          'blog_heading' => 'My Blog Heading',
          'blog_entries' => array(
                                  array('title' => 'Title 1', 'body' => 'Body 1'),
                                  array('title' => 'Title 2', 'body' => 'Body 2'),
                                  array('title' => 'Title 3', 'body' => 'Body 3'),
                                  array('title' => 'Title 4', 'body' => 'Body 4'),
                                  array('title' => 'Title 5', 'body' => 'Body 5')
                                  )
        );

我们像这样轻松打印他

{blog_entries}
    <h5>{title}</h5>
    <p>{body}</p>
{/blog_entries}

但是如何输出这样的数组http://i.imgur.com/L6i1B.png:?

 $data = array( 
array(
    'user' => array('id' => "1", 'name' => "Test1"
    ),'title' => 'Title 1', 'body' => 'Body 1'),
array(
    'user' => array('id' => "2", 'name' => "Test2"
    ),'title' => 'Title 2', 'body' => 'Body 2'),
array(
    'user' => array('id' => "3", 'name' => "Test3"
    ),'title' => 'Title 3', 'body' => 'Body 3')
);

如果我们尝试做这样的事情

{blog_entries}
    {user}
        {id}
    {/user}
    {title}
    {body}
    <br />
{/blog_entries}

我们会有错误:

Message: Invalid argument supplied for foreach()

啊,在这里Extended Template Parser: CodeIgniter... Issue with Nested Arrays发现了类似的问题

【问题讨论】:

    标签: arrays codeigniter parsing multidimensional-array foreach


    【解决方案1】:

    像这样设置你的数组

    $data = array( 'user' => array('id' => "1", 'name' => "Test1", 'title' => 'Title 1', 'body' => 'Body 1'),
                             array('id' => "2", 'name' => "Test2", 'title' => 'Title 2', 'body' => 'Body 2'),
                             array('id' => "3", 'name' => "Test3", 'title' => 'Title 3', 'body' => 'Body 3')
    );
    

    然后,它有点像嵌套 HTML 标记,除了 PHP 中的键->值对(如果有意义的话)。

    {user}
        <h4>{name} : {id}</h4>
        <span>{title}</span>
        <p>
            {body}
        </p>
    {/user}
    

    【讨论】:

      【解决方案2】:

      此功能包含在内置模板类中。 (我不知道您第一次发布问题时它是否存在,但它现在就在那里,我自己使用它。)诀窍在于创建正确的数组结构以传递给解析器。我刚才在一个实时页面中测试了这个示例,在 CI 2.1.3 中 100% 工作。

      作为一个具体示例,请考虑以下代码,该代码显示(以最小格式)酒店的一系列可用客房,并按每个房间显示您每天旅行的每日房价。 (在本例中为 2 天。)

      {available_rooms}
          <p>{room_type} {total_rate}</p>
          {room_rates}
              <p>${room_rate} {room_date}</p>
          {/room_rates}
          <hr>
      {/available_rooms}
      

      与输出类似:

      1 King Bed 119.98
       59.99 2013-03-23
       59.99 2013-03-24
      
      1 King Bed 119.98
       59.99 2013-03-23
       59.99 2013-03-24
      
      2 Double Beds 139.98
       69.99 2013-03-23
       69.99 2013-03-24
      
      2 Double Beds 139.98
       69.99 2013-03-23
       69.99 2013-03-24
      

      这是我在这个例子中成功使用的数组。

      > available_rooms > 0 > room_type = 1 King Bed 
      > available_rooms > 0 > total_rate = 119.98 
      > available_rooms > 0 > room_rates > 0 > room_rate = 59.99 
      > available_rooms > 0 > room_rates > 0 > room_date = 2013-03-23 
      > available_rooms > 0 > room_rates > 1 > room_rate = 59.99 
      > available_rooms > 0 > room_rates > 1 > room_date = 2013-03-24 
      > available_rooms > 1 > room_type = 1 King Bed 
      > available_rooms > 1 > total_rate = 119.98 
      > available_rooms > 1 > room_rates > 0 > room_rate = 59.99 
      > available_rooms > 1 > room_rates > 0 > room_date = 2013-03-23 
      > available_rooms > 1 > room_rates > 1 > room_rate = 59.99 
      > available_rooms > 1 > room_rates > 1 > room_date = 2013-03-24 
      > available_rooms > 2 > room_type = 2 Double Beds 
      > available_rooms > 2 > total_rate = 139.98 
      > available_rooms > 2 > room_rates > 0 > room_rate = 69.99 
      > available_rooms > 2 > room_rates > 0 > room_date = 2013-03-23 
      > available_rooms > 2 > room_rates > 1 > room_rate = 69.99 
      > available_rooms > 2 > room_rates > 1 > room_date = 2013-03-24 
      > available_rooms > 3 > room_type = 2 Double Beds 
      > available_rooms > 3 > total_rate = 139.98 
      > available_rooms > 3 > room_rates > 0 > room_rate = 69.99 
      > available_rooms > 3 > room_rates > 0 > room_date = 2013-03-23 
      > available_rooms > 3 > room_rates > 1 > room_rate = 69.99 
      > available_rooms > 3 > room_rates > 1 > room_date = 2013-03-24
      

      【讨论】:

        猜你喜欢
        • 2016-03-29
        • 2023-03-10
        • 2018-01-21
        • 1970-01-01
        • 2018-01-08
        • 1970-01-01
        • 2020-07-21
        • 1970-01-01
        • 2010-09-30
        相关资源
        最近更新 更多