我正在寻找一种在我的网站上显示社交媒体图标的方法。我的图标根据社交媒体服务交替显示颜色。
我希望它可以有两个条件检查。
首先尝试通过交替颜色进行排序。但是,可能有三个银色图标,只有一个蓝色图标。
其次,如果交替颜色不起作用。然后我会更喜欢它,如果它只是通过颜色聚集图标。所以我可能先有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
)
)
我不一定在为我的问题寻找完整的代码解决方案。或多或少只是寻求关于如何实现这个或我应该使用什么功能的建议。
答案 0 :(得分:2)
创建一些新的空数组,命名为您要查找的颜色。 foreach
通过原始数组并在正确的数组中输入原始数组的索引(如果是银色图标,请输入$silver
数组)。
你应该得到类似的东西:
$silver = array(0, 1, 4);
$blue = array(2, 3);
一旦你有了这些新阵列,就算一下,如果一个距离另一个超过1位,交替将不起作用。只需从一个数组之前输出索引。
如果图标可以交替显示,只需输出较大的一个条目,然后输出另一个条目,并交替输入,直到两个条目都为空。
答案 1 :(得分: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']);
}
}