2015-04-30 4 views
1

У меня есть многомерный массив, который выглядит следующим образом:PHP многомерный массив переименовать ключ не работает

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 
     ) 

) 

Теперь я хочу, чтобы переименовать banner_link ключ 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 
     ) 

) 

Я пробовал с буквой кода, но не повезло.

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

Получение этой ошибки:

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] => 
     ) 

) 

Что я делаю неправильно какие-либо идеи?

Спасибо.

+0

Пожалуйста, измените свой заголовок на одно предложение, описывающее вашу проблему. Это не поиск Google. –

ответ

1

Вы должны проверить, если banner_link существует. И чтобы избежать перезаписи banner, вы должны проверить, не существует ли banner.

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']); 
    } 
} 
+0

Отлично !. Работа совершенная. Благодарю. –

3

banner_link не всегда существует. Используйте isset(), чтобы увидеть, если он существует :

if(isset($getBefamousHomepage[$k]['banner_link'])) { 
    $getBefamousHomepage[$k]['banners'] = $getBefamousHomepage[$k]['banner_link']; 
    unset($getBefamousHomepage[$k]['banner_link']); 
} 
0

Ваш код почти хорошо. Вам просто нужно добавить дополнительную проверку, чтобы увидеть, существует ли banner_link.
Когда это не так, оно выдает уведомление (как вы видите), но код все равно будет выполняться, поэтому для индекса «banner» будет установлено значение null.

Пример кода:

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

Некоторые элементы вашего массива не имеют знака banner_link и вызывают предупреждение при попытке получить к нему доступ. Попробуйте это вместо:

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

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

}