什么是使用PHP创建此列表的最佳方法?

时间:2015-04-17 12:21:08

标签: php

我是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 } ?>

5 个答案:

答案 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模式。