自定义规则排序数组的一个例子

/**
 * Author:abel1314520@gmail.com
 * My blog:http://blog.teamhaka.com 
 *

*/


需求:对css文件中内容的排列进行调整

/* 待排序的字符串 */
$css_str = <<< HTML
a{background-color:#fff}
form{font-size:15px;}
p{color:red}
body{background-image:url(1.png);}
HTML;

希望的顺序:

$css_str = <<< HTML

body{background-image:url(1.png);}
p{color:red}
a{background-color:#fff}
form{font-size:15px;}

HTML;

代码:

$tmp = split(“[\r\n]+”, $css_str); //转换成数组(待排序的数组)

/* 确定排序规则(包含html的应该排在包含body的前面,当然后面也行) */
$arr_sort_rule = array(‘html’, ‘body’, ‘p’, ‘a’, ’span’, ‘form’);

foreach($tmp as $v){
   $r[] = array_search(preg_replace(‘/(\w+).*/is’, ‘$1′, $v), $arr_sort_rule);
   /***********************
      $a = preg_replace(‘/(\w+).*/is’, ‘$1′, $v);//提取$css_str中每一行刚开头的字符串
      array_search($a, $arr_sort_rule);//在排序规则数组中,查找$a,找到则返回排序规则数组中所对应的键
   这样$r这个数组中的值就是一串数字了。
   ************************/
}
array_multisort($r, $tmp); //对$r的值进行排序的同时,将$tmp数组的值也一并排序(可以参见array_multisort函数), 从而达到按自定义的$r规则排序数组$tmp

echo join(PHP_EOL, $tmp);



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值