У меня есть кусок 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, но я не думаю, что делаю проверку правильно.
Любая помощь будет принята с благодарностью, спасибо
Вы должны изменить это:
(Поскольку 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
$function = (isset($function) ? $function : null);
->$function = (isset($function) ? $function : "");
Вы присвоили его с пустой строкой$colors[$function]
ожидает, что каждый элемент в$order
будет ключом в$colors
, но ни одно из показанных вами значений$order
не присутствует в$colors
. Вам нужно очистить$order
чтобы он соответствовал$colors
.