博客列表 >数组排序方法总结,字符串长度计算、数组之间的转换、查找与替换——2018年4月18日

数组排序方法总结,字符串长度计算、数组之间的转换、查找与替换——2018年4月18日

Y的博客
Y的博客原创
2018年04月19日 16:00:45685浏览

实例

<?php 
echo'<h3>数组排序方法总结</h3>';
$reporter = ['baranch' => '三总支','department' => '手术室', 'title' => '冬日送温暖' ,'name'=>'张三' ,'number'=>'30'];
echo '<pre>';
echo '<h3>原始数组</h3>';
print_r($reporter);
echo '<hr color="red">';
//1.sort(&$arr, $flag):正序且键名重置;
//sort($reporter);
//sort($reporter,SORT_REGULAR);//忽略类型,其实就是按类型分组,仅在分组中对同类型数据进行排序
//sort($reporter,SORT_NUMERIC);//全部视为数值类型,字母全转为0,true转为1,
//sort($reporter,SORT_STRING); //全部视为字符类型,因为数字的ASCII码要小于字母,所有排在前面
//sort($reporter, SORT_NATURAL);  //自然排序,与SORT_STRING结果一致
//sort($reporter, SORT_FLAG_CASE); //忽略大小写,PHP5.4+以上支持
//print_r($reporter);


//2.asort($arr, $flag):正序且键名保留
//asort($reporter); 
//等价于 
// asort($reporter, SORT_REGULAR);  //忽略类型,但是键值对应关系得到了保留
//print_r($reporter);

//3.ksort(&$arr, $flat):键名正序排列
//ksort($reporter);  //因为忽略了类型,5与其它键名类型不同,所以在最后面
// ksort($reporter,SORT_STRING); //全部视为字符类型,5的ASCII码在普通字母之前
// ksort($reporter,SORT_NUMERIC); //全部视为数值,则字母全转为0,5就是排到了最后面
//print_r($reporter);


//4.rsort(&$arr):数组反转,忽略原键名
// rsort($reporter); //忽略类型分组排序
// print_r($reporter);

//5. arsort(&$arr):数组反转,保留键名
//arsort($reporter, SORT_STRING); //键值对应关系不变,反转是指由大到小,所以ASCII小的数字字符排到了后面
// print_r($reporter);

//6. krsort(&$arr): 键名反转排序 
krsort($reporter, SORT_STRING); //键名全部视为字符类型,按字母表逆序排列键名
print_r($reporter);



echo '<hr color="red">';
echo '<h3>字符串长度计算</h3>';
$str = 'www.baidu.com';
$str1 = '百度';
//获取内部字符编码集
$encoding =   mb_internal_encoding();
echo '内部字符编码集: ',$encoding,'<br>';
//1.strlen($str):获取字节表示的字符串长度
//utf8模式下,一个中文字符用三个字节表示
echo strlen($str1),'</br>';
//2.mb_strlen($str, $encoding) :获取字符数表示的长度
echo mb_strlen($str1, $encoding),'<br>';
//省略第二个参数,会使用系统默认的字符编码集,当前是utf-8
echo mb_strlen($str),'<br>';  //返回值不变

echo'<hr color="red">';
echo '<h3>字符串与数组之间的转换</h3>';
$stat1 = 'p13111110000';
$stat2 = 'P13100001111';
//1.strcmp($str1, $str2):字符串比较,相等返回0,大于返回>0,否则返回<0
echo strcmp($stat1,$stat2) == 0 ? '相等':'不相等','<br>';
//2.strncmp($str, $str2, $n):比较开头指定长度是否相等 
echo strncmp($stat1,$stat2,3) == 0 ? '相等':'不相等','<br>';
//3.strcasecmp($str1, $str2):不区分大小写的字符串比较,相等返回0,大于返回>0,否则返回<0
echo strcasecmp($stat1, $stat2) == 0 ? '相等' : '不相等', '<br>'; 
//4.strncasecmp($str1, $str2):不区分大小写比较开头指定长度是否相等
echo strncasecmp($stat1,$stat2, 4) == 0 ? '相等' : '不相等', '<br>';
//5.strspn($str, $mark, $start, $length):
//计算字符串中全部字符都存在于指定字符集合中的第一段子串的长度
//$str1:要比较的字符串, $mark:类似于集合,返回匹配的数量
echo strspn($stat1, 'p1234567890'),'<br>';  //返回11
//可以指定开始比较的位置与长度
echo strspn($stat1, '1234567890', 4, 4),'<br>';//返回4
//只比较$str中的第一个子串,后面的全部忽略掉,返回11
echo strspn('15705519989 18955123344 111abc', '1234567890'),'<br>';
//返回3,因为第一个字串中只有前三个是属于数字集合中的数据
echo strspn('157php 18955123344 111abc', '1234567890'),'<br>';
//例如手机号必须是纯数字字符串,要求用户必须输入的是纯数字的字符串
$phone = '13111110000';
// $phone = '1389988php6767';
$mark = '0123456789';
//分析,如果正确匹配,那么strspn()必返回11,因为手机号是11,与strlen($phone)正好相等
echo strlen($phone)==strspn($phone, $mark) ? '全数字' : '必须全为数字';
//等价于: strspn(substr($subject, $start, $length), $mask)


echo '<hr color="red">';
echo '<h3>字符串的查找与替换</h3>';
$str3 = '123456';
//1.strpos($str,$needle, $offset)查找字符串首次出现的位置
echo strpos($str3,'3'),'<br>';//默认从头开始
echo strpos($str3, '5', 3),'<br>'; //从索引3开始查找
//2.strstr($str1, $str2),如果$str2是$str1的子串,返回子串,返回否则false
echo strstr($str3,'4'),'<br>';
echo strstr($str3,'4',true),'<br>';//参数true,会返回子串前面部分
//3.str_replace($str1, $str2, $str3, $num):子串替换,
echo str_replace('234', '789', $str3),'<br>';
//4.substr_replace($str1,$str2,$str3,$start, $length):替换字符串的子串
echo substr_replace($str3, '56', 1,2);
 ?>

运行实例 »

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


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