0

我正在寻找一种在我的网站上显示社交媒体图标的方法。我的图标会根据社交媒体服务交替显示颜色。

  1. 优先级 1 - 按交替颜色对数组项进行排序。
  2. 优先级 2 - 按颜色组排序。

如果它可以有两个条件检查,我希望它。

首先尝试按交替颜色排序。但是,可能有 3 个银色图标而只有 1 个蓝色图标。

其次,如果交替颜色不起作用。如果它只是按颜色聚集图标,我会更喜欢。所以我可能首先有 1 个蓝色图标,然后是 3 个银色图标。

这是我的图标数据数组:

Array
(
    [0] => Array
        (
            [service] => twitter
            [url] => https://twitter.com/1/
            [color] => silver
        )

    [1] => Array
        (
            [service] => google_plus
            [url] => https://plus.google.com/2/posts
            [color] => silver
        )

    [2] => Array
        (
            [service] => facebook
            [url] => https://www.facebook.com/3/
            [color] => blue
        )

    [3] => Array
        (
            [service] => linkedin
            [url] => http://us.linkedin.com/company/4/
            [color] => blue
        )

    [4] => Array
        (
            [service] => youtube
            [url] => http://www.youtube.com/user/5/
            [color] => silver
        )

)

我不一定要为我的问题寻找完整的代码解决方案。或多或少只是在寻找有关如何实现此目标或应该使用哪些功能的建议。

4

2 回答 2

2

创建几个新的空数组,命名为您要查找的颜色。foreach通过原始数组并在正确的数组中输入原始数组的索引(如果是银色图标,请在$silver数组中输入)。

你应该最终得到类似的东西:

$silver = array(0, 1, 4);
$blue = array(2, 3);

一旦你有了这些新数组,就对它们进行计数,如果一个与另一个的距离超过 1 位,则交替将不起作用。只需在另一个数组之前输出一个数组的索引。

如果图标可以交替,只需从较大的一个中输出一个条目,然后另一个,并交替直到两者都为空。

于 2012-11-30T22:33:22.573 回答
1

你可以试试

$silver = array_filter($data,function($v){ return $v['color'] == "silver" ;});
$blue = array_filter($data,function($v){ return $v['color'] == "blue" ;});

foreach(array_map(null, $silver,$blue) as $set)
{
    foreach($set as $var)
    {
        printf("<a href=\"%s\" style=\"color:%s;\">%s</a> <br />",$var['url'],$var['color'],$var['service']);
    }
}
于 2012-11-30T22:44:44.017 回答