0

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...

2
  • Wht's about {seo[canonical]} ? Commented Mar 22, 2018 at 19:22
  • I tried that, it doesn't work... {seo[title]} not working as well... If someone could teach me how to pull those [canonical] and [title] up 1 level array, it is possible to parse. My only workaround right now is to assign those seo arrays into a new string then I use array_merge to combine them back to $this->data Commented Mar 22, 2018 at 20:24

1 Answer 1

1

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.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.