如何使用PHP根据数组值替换数组项?
我正在寻找一种在我的网站上显示社交媒体图标的方法。我的图标根据社交媒体服务的不同而不同如何使用PHP根据数组值替换数组项?,php,arrays,sorting,multidimensional-array,conditional,Php,Arrays,Sorting,Multidimensional Array,Conditional,我正在寻找一种在我的网站上显示社交媒体图标的方法。我的图标根据社交媒体服务的不同而不同 优先级1-按交替颜色对数组项进行排序 优先级2-按颜色组排序 我希望它能有两张有条件的支票 首先尝试通过交替颜色进行排序。但是,可能有三个银色图标,只有一个蓝色图标 其次,如果交替的颜色不起作用。然后,我更希望它只是通过颜色来聚集图标。所以我可能先有一个蓝色图标,然后是三个银色图标 这是我的图标数据数组: Array ( [0] => Array ( [s
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
)
)
我不一定要寻找一个完整的代码来解决我的问题。或多或少,我只是想了解一下如何实现这一点或应该使用哪些功能。创建两个新的空数组,命名为您要查找的颜色
foreach
通过原始数组并在适当的数组中输入原始数组的索引(如果是银色图标,请在$silver
数组中输入)
你应该以这样的方式结束:
$silver = array(0, 1, 4);
$blue = array(2, 3);
一旦你有了这些新的数组,数一数,如果一个数组与另一个数组的距离超过1位数,那么交替数组就不起作用了。只需先从一个数组输出索引,然后再输出另一个数组
如果图标可以交替显示,只需从较大的图标中输出一个条目,然后从另一个图标中输出一个条目,并交替显示,直到两个图标都为空。创建两个新的空数组,命名为您要查找的颜色
foreach
通过原始数组并在适当的数组中输入原始数组的索引(如果是银色图标,请在$silver
数组中输入)
你应该以这样的方式结束:
$silver = array(0, 1, 4);
$blue = array(2, 3);
一旦你有了这些新的数组,数一数,如果一个数组与另一个数组的距离超过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']);
}
}
$silver=array_filter($data,function($v){return$v['color']==“silver”});
$blue=array_filter($data,function($v){return$v['color']==“blue”;});
foreach(数组映射(空、$silver、$blue)为$set)
{
foreach($设置为$var)
{
printf(“
,$var['url'],$var['color'],$var['service']);
}
}
您可以试试
$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']);
}
}
$silver=array_filter($data,function($v){return$v['color']==“silver”});
$blue=array_filter($data,function($v){return$v['color']==“blue”;});
foreach(数组映射(空、$silver、$blue)为$set)
{
foreach($设置为$var)
{
printf(“
,$var['url'],$var['color'],$var['service']);
}
}
那么,你如何决定优先级1是否不能满足,然后退回到优先级2?是否只有两种颜色?@FiskDisk是的,只有两种颜色。那么你如何决定优先级1是否不能满足,然后退回到优先级2?是否只有两种颜色?@FiskDisk是的,只有两种颜色。有趣的方法。另一个PHP函数中的函数定义是怎么回事?我甚至不知道这是可能的。有关于这种用法的文档吗?它被称为匿名函数
或闭包
参见有趣的方法。另一个PHP函数中的函数定义是怎么回事?我甚至不知道这是可能的。有关于这种用法的文档吗?它被称为匿名函数
或闭包
参见