1

I have multidimensional array which looks like this:

Array
(
    [0] => Array
        (
            [banner_link] => http://www.eclipse-pos.com/eclipse/images/small_banner2.jpg
        )

    [1] => Array
        (
            [banners] => 143038313801.jpg,143038313809.jpg,143038313811.jpg
        )

    [2] => Array
        (
            [banners] => 143038306301.jpg,143038306302.jpg,143038306303.jpeg,143038306310.jpg,143038306311.jpg,143038306312.png
        )

)

Now I want to rename banner_link key to banners.

Array
(
    [0] => Array
        (
            [banners] => http://www.eclipse-pos.com/eclipse/images/small_banner2.jpg
        )

    [1] => Array
        (
            [banners] => 143038313801.jpg,143038313809.jpg,143038313811.jpg
        )

    [2] => Array
        (
            [banners] => 143038306301.jpg,143038306302.jpg,143038306303.jpeg,143038306310.jpg,143038306311.jpg,143038306312.png
        )

)

I have tried with bellow code but no luck.

foreach ( $getBefamousHomepage as $k=>$v )
{
    $getBefamousHomepage[$k] ['banners'] = $getBefamousHomepage[$k] ['banner_link'];
    unset($getBefamousHomepage[$k]['banner_link']);
}

Getting this errors:

Notice: Undefined index: banner_link in /var/www/sitename/application/views/_templates/global_footer.php on line 14

Notice: Undefined index: banner_link in /var/www/sitename/application/views/_templates/global_footer.php on line 14

Array
(
    [0] => Array
        (
            [banners] => http://www.eclipse-pos.com/eclipse/images/small_banner2.jpg
        )

    [1] => Array
        (
            [banners] => 
        )

    [2] => Array
        (
            [banners] => 
        )

)

What I am doing wrong any idea?

Thanks.

1
  • Please change your title to a single sentence describing your problem. It's not a Google search. Commented Apr 30, 2015 at 12:14

4 Answers 4

3

banner_link doesn't always exist. Use isset() to see if it exists :

if(isset($getBefamousHomepage[$k]['banner_link'])) {
    $getBefamousHomepage[$k]['banners'] = $getBefamousHomepage[$k]['banner_link'];
    unset($getBefamousHomepage[$k]['banner_link']);
}
Sign up to request clarification or add additional context in comments.

Comments

1

You should check if banner_link exists. And to avoid overwriting banner you should check if banner not already exists.

foreach ( $getBefamousHomepage as $k=>$v ) {    
    if(isset($getBefamousHomepage[$k]['banner_link']) && !isset($getBefamousHomepage[$k]['banners'])) {        
        $getBefamousHomepage[$k]['banners'] = $getBefamousHomepage[$k]['banner_link'];
        unset($getBefamousHomepage[$k]['banner_link']);
    }
}

1 Comment

Excellent!. Working perfect. Thanks.
0

Your code is almost good. You just need to add an extra check to see if banner_link exists.
When it does not, it throws a notice (like you see), but the code will still execute, so the "banner" index will be set to null.

Code example:

foreach ( $getBefamousHomepage as $k=>$v )
{
    if (isset($getBefamousHomepage[$k]['banner_link'])) 
    {
        $getBefamousHomepage[$k] ['banners'] = $getBefamousHomepage[$k] ['banner_link'];
        unset($getBefamousHomepage[$k]['banner_link']);
    }
}

Comments

0

Some element of your array don't have banner_link and it is causing the warning when you try to access it. Try this instead:

if(isset($getBefamousHomepage[$k] ['banner_link'])) {

    $getBefamousHomepage[$k] = array("banners" => $getBefamousHomepage[$k] ['banner_link']);

}

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.