博客列表 >数组排序,字符串长度计算,字符串与数组之间的转换,字符串的查找与替换20180418

数组排序,字符串长度计算,字符串与数组之间的转换,字符串的查找与替换20180418

jobing的博客
jobing的博客原创
2018年04月22日 19:00:50607浏览

以下是数组排序、字符串长度计算、字符串与数组之间的转换的相关代码,与大家分享:

数组排序:

实例

<?php 
 echo '<h3>数组的排序</h3><hr color="red">';

$info = ['id'=>20, 'name'=>'jobing', 'course'=>'Physics', 'score'=>100, 5=>true];
echo '<pre>';
echo '<p>学生信息:</p>';
print_r($info);
echo '<hr color="red">';

//1.sort(&$info, $flag):正序且键名重置
sort($info);//布尔值1显示在最后
// sort($info, SORT_REGULAR);  //忽略类型,其实就是按类型分组,仅在分组中对同类型数据进行排序
// sort($info, SORT_NUMERIC);  //全部视为数值类型,字母全转为0,true转为1,
// sort($info, SORT_STRING);   //全部视为字符类型,因为数字的ASCII码要小于字母,所有排在前面,此时100在20前面
// sort($info, SORT_NATURAL);  //自然排序,与SORT_STRING结果不一致,此时20在100前面
// sort($info, SORT_FLAG_CASE); //忽略大小写,PHP5.4+以上支持,并未忽略7.2版本。。。
print_r($info);

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

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


//4.rsort(&$info):数组反转,忽略原键名
// rsort($info); //忽略类型分组排序,布尔值1显示在最后
// print_r($info);

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

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

运行实例 »

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

效果图:

20180418.png

字符串长度计算代码:

实例

<?php 
echo '<p>字符串的长度计算</p><hr color="red">';

$Name = 'jobing的网站';
//获取内部字符编码集
$encoding =   mb_internal_encoding();
echo '内部字符编码集: ',$encoding,'<br>';

//1.strlen($str):获取字节表示的字符串长度
//utf8模式下,一个中文字符用三个字节表示
echo strlen($Name),'<br>';//输出为15

//2.mb_strlen($str, $encoding) :获取字符数表示的长度
echo mb_strlen($Name, $encoding),'<br>';
//省略第二个参数,会使用系统默认的字符编码集,当前是utf-8
echo mb_strlen($Name),'<br>';  //输出为9

运行实例 »

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

图:

11.png

字符串与数组之间的转换代码:

实例

<?php 
echo '<p>字符串与数组之间的转换</p><hr color="red">';

echo '<pre>';
$str = 'Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday';
echo '<p>原始字符串:'.$str.'</p>';
//1.str_split($str,$length=1)按字符数量,将字符串分割为数组,默认为1
// print_r(str_split($str)); //默认一个字符转为数组中的一个元素
// print_r(str_split($str,10)); //10个一组进行转换

// 2.explode($delimiter,$str,$num):按分隔符,将字符串分割为数组,可指定数组元素数量
print_r(explode(',',$str)); //用','号进行分割字符串
// print_r(explode(',',$str,5)); //指定数组必须是5个元素,最后一个元素保存全部剩余数据
echo '<hr color="red"></hr>';
// 3.implode($glue, $str):按分隔符,将一维数组拼装成字符串,默认用空格分隔
$str2 = explode(',', $str);
echo '<p>新字符串:'.implode('  ', $str2).'</p>'; //用空格分隔
// echo implode(',',$str2), '<br>'; //用,分隔
// echo implode('--',$str2), '<br>'; //用--分隔

运行实例 »

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

效果图:

20180418-23.png

字符串的查找与替换代码:

实例

<?php 
echo '<p>字符串查找与替换</p><hr color="green">';

$str = 'www.jobing.com';
//1.strpos($str,$needle, $offset)查找字符串首次出现的位置
echo strpos($str, 'o'),'<br>'; //默认从头开始查找输出为5
echo strpos($str, 'o', 6),'<br>'; //从索引6开始查找,输出为12

//2.strstr($str1, $str2),如果$str2是$str1的子串,返回子串,返回否则false
echo strstr($str, 'job'),'<br>';  //返回子串及后面部分jobing.com
echo strstr($str, 'job', true),'<br>'; //参数true,会返回子串前面部分www.

echo '<hr>';
//3.str_replace($str1, $str2, $str3, $num):子串替换,
echo str_replace('www','https://www',$str), '<br>';//返回https://www.jobing.com

echo '<hr>';
//4.substr_replace($str1,$str2,$str3,$start, $length):替换字符串的子串
//在$str中,从第5个索引位置起的2个字符,用'pppph'进行替换
echo substr_replace($str,'123456', 5, 2); //返回www.j123456ing.com

运行实例 »

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

效果图:

20180418-3.png

总结:

数组排序方法有多种:

sort(&$info, $flag):数组正序且键名重置,与其相反的排列操作是rsort(&$info);

asort($info, $flag):数组正序且键名保留,与其相反的排列操作是arsort(&$info);

ksort(&$info, $flat):键名正序排列,与其相反的排列操作是krsort(&$info);

并可以设置各种参数,如SORT_NUMERIC全部视为数值类型,字母全转为0,true转为1;SORT_STRING全部视为字符类型,因为数字的ASCII码要小于字母,,所以排在前面等。

字符串长度计算:

字符串长度的计算规则是1个中文字符等于3个字节,1个英文字符是1个字节;

字符数的的计算规则1个中文字符等于1个字符数,1个英文字符是1个字符数。

字符串与数组之间的转换:

字符串可以通过函数str_split($str,$length)按字符数量进行装换,长度不写默认为1,;也可以通过explode($delimiter,$str,$num)函数,按照分隔符,将字符串分割为数组,并指定数组元素数量,若不指定则全部分割。

数组可以通过函数implode($glue, $str)按分隔符将一维数组拼装成字符串。

字符串的查找与替换:

可以通过函数strpos($str1,$str2, $offset)查找$str2在$str1中首次出现的位置,返回的数字,代表在第几个出现;

可以通过函数strstr($str1, $str2)确认是否有对应的字符串,如果$str2是$str1的子串,返回子串以及后面的内容;若加上参数true如strstr($str1, $str2,true),会返回子串前面部分;如果$str2不是$str1的子串,返回false。

可以通过函数substr_replace($str1,$str2,$str3,$start, $length):替换字符串的子串,返回替换后的字符串,如substr_replace($str,'123456', 5, 2),将$str字符串中的第5个索引位置的起的2个字符替换为123456并返回。


在使用sort()进行数组排序的时候,需要注意的问题:

使用sort($info, SORT_STRING)进行排序,大写字母在小写前面,100是在20前面,其他情况20在100前面;

问题:

布尔值始终在最后面,无论进行正序sort()和反序rsort()排列都是一样,

SORT_FLAG_CASE并未忽略大小写,还是大写在前面,我是7.2版本。



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