php常见的数据处理函数

常用的一些字符串和数组的处理操作

实例1 表单提交批量二级域名,每个域名占一行,需要获取每个域名的子域名,并返回处理后的数组

前端:数据格式需要每行一个域名,严格按照格式提交数据
后端php:

    //把字符串按照换行符分割成数组,每个元素对应一个域名
	$d_arr = explode("\n",$_POST['domains'] );//注意\n需要双引号才能解析
	//分离子域名也就是把第一个.符号和前面的字符用空字符替换掉。
	
	//最常见的方法就是循环出来,在做字符替换如下
	$t1 = microtime(true);//当前微妙级时间,单位是秒
	$ds = [];
	//法1
	foreach($d_arr as $d){
		$ds[] = str_replace(explode(".",$d)[0],'',$d);
	}
	//法2
	$ds = preg_filter('/^\w+\./','',$d_arr);//用正则搜索并替换,如果是数组,返回的也是数组,并且正则也会针对每个数组元素进行匹配。
	$ds = preg_replace('/^\w+\./','',$d_arr);//用正则搜索并替换,如果是数组,返回的也是数组
	//这两个函数作用相同,区别是返回值,preg_filter只有在匹配成功才会返回替换后的值
	而preg_replace匹配成功返回替换后的值,匹配失败则返回原数据,出现错误返回null
	$t2 = microtime(true);//当前微妙级时间,单位是秒
	$t =number_format( $t2 - $t1,6);//执行完成后消耗的时间。
	echo '程序消耗时间为'.$t.' s'.',消耗内存:'.memory_get_usage()/1024.'kb';
	//memory_get_usage — 返回分配给 PHP 的内存量

经过程序执行时间对比发现使用php内置函数preg_replace和preg_filter速度是循环处理的十几倍。所以在php中要尽量使用内置函数代替循环

实例2 过滤指定数据
	//待处理数剧,过滤出score=100的条目
	$arr = '[{"id":1,"score":100},{"id":2,"score":50},{"id":3,"score":70},{"id":4,"score":100},{"id":5,"score":100}]';
	法1:循环查找,性能比较差,不推荐
	法2:使用内置函数array_filter处理,该函数通过回调函数来过滤数据,具体如下
	$arrs = json_decode($arr,1);
	$rs = array_filter($arrs,'filter');//通过回调函数过滤数据,默认回调函数参数就是数组元素的值,也可以根据该函数第三个参数指定不同的传参方式
	 ARRAY_FILTER_USE_KEY - callback接受键名作为的唯一参数 
	 ARRAY_FILTER_USE_BOTH - callback同时接受键名和键值 

	array_multisort($rs); //对数组重新排序
	function filter($arr){
		if(is_array($arr) && $arr['score'] == 100){
			return 1;
		}
	}
实例3 数组去重
  • array_unique去重

  • array_flip去重

     array_flip :交换数组中的键和值
     $arr [1,2,3,2,1,5];
     $flip1 = array_flip($arr);//键值调换,由于键不能有重复值,会覆盖,所以此时已经去重了;
     $uniq = array_keys($filip);//获取去重后的数组
     $uniq2 = array_flip($flip);//同上。
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值