dozabt4329 2018-03-22 18:15
浏览 60
已采纳

CodeIgniter模板解析器将多维数组转换为单个

I have a multidimensional array for $this->data

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

How do I change the above to

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

And what happens if I have another [icon] (a duplicate) under the [seo] will the first [icon] gets replace or ignore or how when I change it like above? The reason I need to convert it into single array because when I send the data for parsing, I can't get the {canonical} and {title} to work.

$this->data['seo'] from Profile_Controller.php will replace $this->data from MY_Controller.php so right now, I'm doing a workaround like putting those seo data into another array and use array_merge but I think there's another better way around it...

  • 写回答

1条回答 默认 最新

  • doupu3635 2018-03-22 21:58
    关注

    Using a foreach it's pretty easy. Just assign the array keys of seo to the main array and then unset the seo array from the main array:

       <?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);
    

    If there is a duplicate icon in the seo array it will overwrite the one in the master array.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?