Получение неопределенного индекса на PHP для каждого

0

У меня есть кусок PHP-кода, который дает мне сообщение Undefined index.

$order = explode(',', $ass_icon_order);

foreach($order as $function){
    $function = (isset($function) ? $function : null);
    if($function != ''){
        $css .= '.ass-sortable-li.li-'.$function.' a:hover, .ass-sortable-li.li-'.$function.'.active a { background:'.$colors[$function].' }';
        ?>
        <li id="<?php echo $function; ?>" rel="<?php echo $function; ?>" class="ass-sortable-li li-<?php echo $function; ?>">
            <?php echo '<a href="#" class="icon-bg"><i class="ass-'.$function.'"></i></a>'; ?>
        </li>
    <?php
        $count_networks++;
    }
}

Когда я запускаю print_r ($ order), я получаю этот массив:

Array
(
    [0] => twitter
    [1] => facebook
    [2] => googleplus
    [3] => delicious
    [4] => stumbleupon
    [5] => pinterest
    [6] => linkedin
    [7] => youtube
    [8] => fblike
    [9] => fbshare
    [10] => fbtalk
    [11] => twitter_followers
    [12] => twitter_following
    [13] => twitter_tweets
    [14] => twitter_shares
    [15] => google_shares
    [16] => google_followers
    [17] => linkedin_shares
    [18] => linkedin_followers
    [19] => delicious_shares
    [20] => delicious_followers
    [21] => youtube_subscribers
    [22] => youtube_views
    [23] => dribbble
    [24] => soundcloud_followers
    [25] => soundcloud_plays
    [26] => instagram
    [27] => mailchimp
    [28] => foursquare
)

Когда я запускаю print_r ($ colors), я получаю:

Array
(
    [fblike] => #3b5998
    [fbshare] => #3b5998
    [fbtalk] => #3b5998
    [twitter_followers] => #4ec2dc
    [twitter_following] => #4ec2dc
    [twitter_tweets] => #4ec2dc
    [twitter_shares] => #4ec2dc
    [google_shares] => #2d2d2d
    [google_followers] => #2d2d2d
    [linkedin_shares] => #006da7
    [linkedin_followers] => #006da7
    [delicious_shares] => #3271cb
    [delicious_followers] => #3271cb
    [stumbleupon] => #eb4924
    [youtube_subscribers] => #df1f1C
    [youtube_views] => #df1f1C
    [dribbble] => #f175a8
    [soundcloud_followers] => #ff4c00
    [soundcloud_plays] => #ff4c00
    [instagram] => #3b6a91
    [mailchimp] => #2C9AB7
    [foursquare] => #0732a2
    [pinterest] => #d01d15
)

Кажется, я получаю уведомление из этого раздела кода:

$css .= $colors[$function];

Я играл с добавлением isset, но я не думаю, что делаю проверку правильно.

Любая помощь будет принята с благодарностью, спасибо

  • 2
    $function = (isset($function) ? $function : null); -> $function = (isset($function) ? $function : ""); Вы присвоили его с пустой строкой
  • 3
    Этот код: $colors[$function] ожидает, что каждый элемент в $order будет ключом в $colors , но ни одно из показанных вами значений $order не присутствует в $colors . Вам нужно очистить $order чтобы он соответствовал $colors .
Показать ещё 9 комментариев
Теги:
undefined
isset

1 ответ

1
Лучший ответ

Вы должны изменить это:

(Поскольку NULL и пустая строка не совпадают)

$function = (isset($function) ? $function : null);

к этому:

$function = (isset($function) ? $function : "");
                                          //^^ See here

Также вам нужно изменить инструкцию if, чтобы проверить, существует ли ключ в массиве:

if($function != '' && in_array($function, array_flip($colors))) {
                    //^^^^^^^^ Check if '$function' exists in the array as key
  • 0
    Спасибо @ rizier123
  • 0
    @ Джейсон Не за что! Приятного дня: D

Ещё вопросы

Сообщество Overcoder
Наверх
Меню