Blogger Information
Blog 31
fans 0
comment 1
visits 24625
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
数组排序,字符串长度计算,字符串与数组之间的转换,字符串的查找与替换20180418
jobing的博客
Original
618 people have browsed it

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

数组排序:

实例

<?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版本。



Correction status:Uncorrected

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post