我是PHP的新手,并希望了解是否有更好的方法来编写我所拥有的这个小代码片段。基本上,它为某些社交媒体链接提供变量,检查它们是否为空,在函数中创建数组并在UL中调用数组。我知道它很简单,但我只是看看我拥有的是最好的还是我可以改进它。
<?php
$facebook = of_get_option('facebook');
$twitter = of_get_option('twitter');
$youtube = of_get_option('youtube');
$linkedIn = of_get_option('linkedin');
$instagram = of_get_option('instagram');
$socialMediaLinks = array(
);
if (!empty($facebook)){
$socialMediaLinks[facebook] = $facebook;
}
if (!empty($twitter)){
$socialMediaLinks[twitter] = $twitter;
}
if (!empty($youtube)){
$socialMediaLinks[youtube] = $youtube;
}
if (!empty($linkedIn)){
$socialMediaLinks[linkedIn] = $linkedIn;
}
if (!empty($instagram)){
$socialMediaLinks[instagram] = $instagram;
}
function socialMediaList($value, $key){
echo '<li class="'.$key.'"><a href="'.$value.'">'.$key.'</a></li>';
}
?>
<?php if (!empty($socialMediaLinks)){ ?>
<ul class="social-media">
<?php array_walk($socialMediaLinks, 'socialMediaList'); ?>
</ul>
<?php } ?>
答案 0 :(得分:2)
您只需执行以下操作即可缩短代码:
$socialMediaLinks = array_filter(array(
'facebook' => of_get_option('facebook'),
'twitter' => of_get_option('twitter'),
'youtube' => of_get_option('youtube'),
'linkedIn' => of_get_option('linkedIn'),
'instagram' => of_get_option('instagram'),
));
这将自动删除所有空条目,因此您之后不会需要那么多if语句。
答案 1 :(得分:0)
试试这个:
<?php
$socialMediaItems = array(
'facebook' => of_get_option('facebook'),
'twitter' => of_get_option('twitter'),
'youtube' => of_get_option('youtube'),
'linkedin' => of_get_option('linkedin'),
'instagram' => of_get_option('instagram')
);
$socialMediaLinks = array();
foreach ($socialMediaItems as $key => $item) {
if ($item) {
$socialMediaLinks[$key] = $item;
}
}
function socialMediaList($value, $key){
echo '<li class="'.$key.'"><a href="'.$value.'">'.$key.'</a></li>';
}
?>
<?php if (!empty($socialMediaLinks)){ ?>
<ul class="social-media">
<?php array_walk($socialMediaLinks, 'socialMediaList'); ?>
</ul>
<?php } ?>
答案 2 :(得分:0)
使用数组
<?php
$facebook = of_get_option('facebook');
$twitter = of_get_option('twitter');
$youtube = of_get_option('youtube');
$linkedIn = of_get_option('linkedin');
$instagram = of_get_option('instagram');
$socialMediaLinks = array();
$madeArray = array('facebook' => $facebook,'twitter' => $twitter,'youtube' => $youtube,'linkedin' => $linkedIn,'instagram' => $instagram);
foreach ($madeArray as $key => $value) {
if (!empty($value)) {
$socialMediaLinks[$key] = $value;
}
}
function socialMediaList($value, $key){
echo '<li class="'.$key.'"><a href="'.$value.'">'.$key.'</a></li>';
}
?>
<?php if (!empty($socialMediaLinks)){ ?>
<ul class="social-media">
<?php array_walk($socialMediaLinks, 'socialMediaList'); ?>
</ul>
<?php } ?>
答案 3 :(得分:0)
更好的可能是:
<?php
$socialmedia = array('facebook', 'twitter', 'youtube', 'linkedin' 'instagram');
$socialMediaLinks = array();
function GetOptions($name)
{
$value = of_get_option($name);
if (!empty($value))
$socialMediaLinks[$name] = $value;
}
foreach ($socialmedia as $smname)
GetOptions($smname);
function socialMediaList($value, $key){
echo '<li class="'.$key.'"><a href="'.$value.'">'.$key.'</a></li>';
}
if (!empty($socialMediaLinks)){
?>
<ul class="social-media">
<?php array_walk($socialMediaLinks, 'socialMediaList'); ?>
</ul>
<?php
}
?>
答案 4 :(得分:0)
我做了这样的事情:
$social_networks = ['facebook', 'twitter', 'youtube', 'linkedin', 'instagram'];
$media_links = [];
foreach ($social_networks as $network) {
if ($option = of_get_option($network)) {
$media_links[$network] = $option;
}
}
// your code to output...
如果你用简短的支持时间编写简单的应用程序 - 你的显示风格正常。但如果它复杂,你应该看看MVC模式。