【问题标题】:CodeIgniter Template Parser Convert MultiDimensional Array To SingleCodeIgniter 模板解析器将多维数组转换为单维数组
【发布时间】:2018-03-22 18:15:02
【问题描述】:

我有一个$this->data 的多维数组

Array
(
    [icon] => http://localhost/uploads/icon.png
    [logo] => http://localhost/uploads/logo.svg
    [seo] => Array
        (
            [canonical] => http://localhost/profile/register/
            [title] => Register
        )
)

如何将上述更改为

Array
(
    [icon] => http://localhost/uploads/icon.png
    [logo] => http://localhost/uploads/logo.svg
    [canonical] => http://localhost/profile/register/
    [title] => Register
)

如果我在[seo] 下有另一个[icon](重复)会发生什么情况?第一个[icon] 会被替换或忽略,或者当我像上面那样更改它时如何?我需要将其转换为单个数组的原因是因为当我发送数据进行解析时,我无法让 {canonical}{title} 工作。

来自Profile_Controller.php$this->data['seo'] 将替换来自MY_Controller.php$this->data 所以现在,我正在做一个解决方法,比如将这些seo 数据放入另一个数组并使用array_merge,但我认为还有另一种更好的方法它...

【问题讨论】:

  • 关于 {seo[canonical]} 的内容是什么?
  • 我试过了,它不起作用...{seo[title]} 效果不佳...如果有人可以教我如何将这些 [canonical] 和 [title] 拉到 1 级数组, 可以解析。我现在唯一的解决方法是将这些 seo 数组分配到一个新字符串中,然后我使用array_merge 将它们组合回$this->data

标签: php arrays codeigniter templates multidimensional-array


【解决方案1】:

使用 foreach 非常简单。只需将 seo 的数组键分配给主数组,然后从主数组中取消设置 seo 数组:

   <?php
    $arr = [
        'icon' => 'http://localhost/uploads/icon.png',
        'logo' => 'http://localhost/uploads/logo.svg',
        'seo' => [
                'canonical' => 'http://localhost/profile/register/',
                'title' => 'Register'
            ]
    ];

        echo '<pre>';

        print_r($arr);

        foreach ($arr['seo'] as $k => $v) {
            $arr[$k] = $v;
        }
        unset($arr['seo']);

        print_r($arr);

如果seo 数组中有重复的icon,它将覆盖主数组中的那个。

【讨论】:

    猜你喜欢
    • 2014-11-25
    • 2018-05-03
    • 1970-01-01
    • 2018-10-31
    • 2019-06-13
    • 2023-03-26
    • 2019-06-29
    相关资源
    最近更新 更多