如何使用PHP根据数组值替换数组项?

如何使用PHP根据数组值替换数组项?,php,arrays,sorting,multidimensional-array,conditional,Php,Arrays,Sorting,Multidimensional Array,Conditional,我正在寻找一种在我的网站上显示社交媒体图标的方法。我的图标根据社交媒体服务的不同而不同 优先级1-按交替颜色对数组项进行排序 优先级2-按颜色组排序 我希望它能有两张有条件的支票 首先尝试通过交替颜色进行排序。但是,可能有三个银色图标,只有一个蓝色图标 其次,如果交替的颜色不起作用。然后,我更希望它只是通过颜色来聚集图标。所以我可能先有一个蓝色图标,然后是三个银色图标 这是我的图标数据数组: Array ( [0] => Array ( [s

我正在寻找一种在我的网站上显示社交媒体图标的方法。我的图标根据社交媒体服务的不同而不同

  • 优先级1-按交替颜色对数组项进行排序
  • 优先级2-按颜色组排序
  • 我希望它能有两张有条件的支票

    首先尝试通过交替颜色进行排序。但是,可能有三个银色图标,只有一个蓝色图标

    其次,如果交替的颜色不起作用。然后,我更希望它只是通过颜色来聚集图标。所以我可能先有一个蓝色图标,然后是三个银色图标

    这是我的图标数据数组:

    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函数中的函数定义是怎么回事?我甚至不知道这是可能的。有关于这种用法的文档吗?它被称为
    匿名函数
    闭包
    参见