【问题标题】:PHP Codeigniter parsing array ( [0] => test2 [1] => test1)PHP Codeigniter 解析数组([0] => test [1] => test 1)
【发布时间】:2015-10-26 19:21:43
【问题描述】:

我需要关于如何在 codeigniter 中解析这个数组的帮助

数组 ([0] => test0 [1] => test1)

在 CodeIgniter 用户指南中我发现了这个:

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

如果数组是这样的,那就可以了:

$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')
    ));

http://www.codeigniter.com/user_guide/libraries/parser.html?highlight=parsing

但我从一个 API 收到这样的数组:

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

我如何解析它?或者我如何将数字 [0,1,2,3] 转换为 [title,title,title,title]

【问题讨论】:

    标签: php arrays codeigniter parsing


    【解决方案1】:

    你可以做一个简单的重映射函数:

    $out = array();
    foreach ($blog_entries as $index => $array) {
        $out[] = array('title' => $array[$index], 'body' => $array['body']);
    }
    

    样本输出:

    array(5) {
      [0]=>
      array(2) {
        ["title"]=>
        string(7) "Title 1"
        ["body"]=>
        string(6) "Body 1"
      }
      [1]=>
      array(2) {
        ["title"]=>
        string(7) "Title 2"
        ["body"]=>
        string(6) "Body 2"
      }
      [2]=>
      array(2) {
        ["title"]=>
        string(7) "Title 3"
        ["body"]=>
        string(6) "Body 3"
      }
      [3]=>
      array(2) {
        ["title"]=>
        string(7) "Title 4"
        ["body"]=>
        string(6) "Body 4"
      }
      [4]=>
      array(2) {
        ["title"]=>
        string(7) "Title 5"
        ["body"]=>
        string(6) "Body 5"
      }
    }
    

    【讨论】:

      【解决方案2】:

      第一个参数包含视图文件的名称(在此 例如该文件将被称为 blog_template.php),第二个 参数包含要在 模板。

      $data = array(
      'blog_title'   => 'My Blog Title',
      'blog_heading' => 'My Blog Heading',
      'blog_entries' => array(
              array('0' => 'Title 1', 'body' => 'Body 1'),
              array('1' => 'Title 2', 'body' => 'Body 2'),
              array('2' => 'Title 3', 'body' => 'Body 3'),
              array('3' => 'Title 4', 'body' => 'Body 4'),
              array('4' => 'Title 5', 'body' => 'Body 5')
      ));
      
      foreach ($data['blog_entries'] as &$arr)
      {
          foreach ($arr as $k => $v)
          {
              if (is_numeric($k))
              {
                  $arr['title'] = $v;
                  unset($arr[$k]);
              }
          }
          $arr = array_reverse($arr);
      }
      
      echo '<pre>', var_dump($data);exit;
      

      但是您应该注意$data 数组结构的最终变化。因此,如果您的 api 将带有数字键的另一个元素导出到该数组,则此代码可能会被破坏。不过你可以检查和测试它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-12-03
        • 2017-11-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多