博客列表 >php函数 之 数组排序、字符串长度计算、字符串与数组转换、字符串查找与替换

php函数 之 数组排序、字符串长度计算、字符串与数组转换、字符串查找与替换

墨雨的博客
墨雨的博客原创
2018年04月19日 18:38:23960浏览

1.数组排序函数

实例

<?php 
echo '<h3>数组排序函数</h3><hr>';
echo '<pre>';
echo '<p>注意:
   1.数组为引用传参,所有原数据会被改写 
   2.数组元素的类型建议全部相同,否则会产生不可预见结果
   3.排序成功返回: true,失败返回: false
  
可用常量:
   1.SORT_REGULAR: [默认]正常比较单元(不改变类型)
   2.SORT_NUMERIC: 单元被作为数字来比较
   3.SORT_STRING: 单元被作为字符串来比较
   4.SORT_NATURAL: 单元以“自然的顺序”对字符串进行排序
   5.SORT_FLAG_CASE: 不区分大小写排序字符串</P>';
 echo '<hr>';  
 
$arr = ['id'=>3, 'name'=>'phu', 'course'=>'Php', 'grade'=>60, 5=>true];
echo '<p>原始数组:</p>';
print_r($arr);
echo '一. 正排序<br>';
echo '    1. sort(&$arr, $flag) 值升序排列,键名按索引方式重置';
sort($arr);
print_r($arr);
$arr = ['id'=>3, 'name'=>'phu', 'course'=>'Php', 'grade'=>60, 5=>true];
sort($arr, SORT_REGULAR);
print_r($arr);
$arr = ['id'=>3, 'name'=>'phu', 'course'=>'Php', 'grade'=>60, 5=>true];
sort($arr, SORT_NUMERIC); 
print_r($arr);
$arr = ['id'=>3, 'name'=>'phu', 'course'=>'Php', 'grade'=>60, 5=>true];
sort($arr, SORT_STRING);
print_r($arr);
$arr = ['id'=>3, 'name'=>'phu', 'course'=>'Php', 'grade'=>60, 5=>true];
sort($arr, SORT_NATURAL);
print_r($arr);
$arr = ['id'=>3, 'name'=>'phu', 'course'=>'Php', 'grade'=>60, 5=>true];
sort($arr, SORT_FLAG_CASE);
print_r($arr);

echo '    2. asort(&$arr,$flag)升序排列,键名保留与值的对应<br>';
$arr = ['id'=>3, 'name'=>'phu', 'course'=>'Php', 'grade'=>60, 5=>true];

asort($arr); 
print_r($arr);

echo '    3. ksort(&$arr,$flag) 按键名升序排列,适合于关联数组,键值对应关系不变<br>';
ksort($arr);  //因为忽略了类型,5与其它键名类型不同,所以在最后面
print_r($arr); 
ksort($arr,SORT_STRING); //全部视为字符类型,5的ASCII码在普通字母之前
print_r($arr); 
ksort($arr,SORT_NUMERIC); //全部视为数值,则字母全转为0,5就是排到了最后面
print_r($arr); 
echo '二、反排序<br>';
echo '    1. rsort(&$arr, $flag):对数组逆向排序
    2. arsort(&$arr, $flag):对数组进行逆向排序并保持索引关系
    3. krsort(&$arr, $flag):对数组按照键名逆向排序
  与正排序的函数用法一样,只是排序按降序</p>';
echo '三、自定义排序,仅对值进行排序,忽略键名(即会重置键名)<br>';
$arr1 = [10, 4, 22, 99, 35, 18];
usort($arr1, function($a, $b) {
	$res = $a - $b; 
	if ($res == 0) {
		return 0;
	} else if ($res > 0) {
		return true;
	} else {
		return false;
	}
});
print_r($arr1);

运行实例 »

点击 "运行实例" 按钮查看在线实例

2.字符串长度计算函数

实例

<?php 
echo '<p>字符串长度计算</p>';
echo '<p>
  1.strlen($str)<br>
  2.mb_strlen($str, $encoding)
 </p>';

$siteName = 'php中文网';
echo '字符串样本:',$siteName,'<br>';
//获取内部字符编码集
$encoding = mb_internal_encoding();
echo '内部字符编码集: ',$encoding,'<br>';
echo '获取字节表示的字符串长度:',strlen($siteName),'<br>';
echo '获取字符数表示的长度:',mb_strlen($siteName, $encoding),'<br>';

运行实例 »

点击 "运行实例" 按钮查看在线实例

3.字符串与数组转换函数

实例

<?php 
echo '字符串与数组之间的转换<br>';
echo '<pre>';
echo '<p>
    1.str_split($str,$length=1),按字符数量,将字符串分割为数组,默认为1
    2.explode($delimiter,$str,$num):按分隔符,将字符串分割为数组,可指定数组元素数量
    3.implode($glue, $str):按分隔符,将一维数组拼装成字符串,默认用空格分隔</p><br>';
 
$str = 'html,css,jquery,php,mysql,thinkphp';
echo '<p>原始字符串:'.$str.'</p>';
print_r(str_split($str)); //认一个字符转为数组中的一个元素
print_r(str_split($str,5)); //5个一组进行转换
print_r(explode(',',$str)); //用','号进行分割字符串
print_r(explode(',',$str,5)); //指定数组必须是5个元素,最后一个元素保存全部剩余数据

$arr2 = explode(',', $str);
echo implode(' ', $arr2), '<br>'; //用空格分隔
echo implode(',',$arr2), '<br>'; //用,分隔
echo implode('*',$arr2), '<br>'; //用*分隔

运行实例 »

点击 "运行实例" 按钮查看在线实例

4.字符串的查找和替换函数

实例

<?php 
echo '字符串查找与替换';
echo '<pre>';
echo '<p>
  1.strpos($str1,$str2, $offset)查找$str2在$str1中首次出现的位置
  2.strstr($str1, $str2),如果$str2是$str1的子串,返回子串,返回否则false
  如果确定$str2是$str1的子串,推荐使用strpos(),速度更快
  3.str_replace($str1, $str2, $str3, $num):子串替换,$num是替换次数
  4.substr_replace($str1,$str2,$str3,$start, $length):替换字符串的子串
 </p>';

$str = 'www.php.cn';
echo '字符串样本:',$str,'<br>';
echo strpos($str, 'p'),'<br>'; //默认从头开始查找
echo strpos($str, 'p', 5),'<br>'; //从索引5开始查找
echo '<hr>';
echo strstr($str, 'php'),'<br>';  //返回子串及后面部分
echo strstr($str, 'php', true),'<br>'; //参数true,会返回子串前面部分
echo '<hr>';
//3.str_replace($str1, $str2, $str3, $num):子串替换,
echo str_replace('www','http://www',$str,$i), '<br>';
echo '替换了:',$i,'次';
echo '<hr>';
//在$str中,从第5个索引位置起的2个字符,用'pppph'进行替换
echo substr_replace($str,'pppph', 5, 2);

运行实例 »

点击 "运行实例" 按钮查看在线实例


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议