博客列表 >数组排序方法总结及字符串相关总结---2018年4月19日

数组排序方法总结及字符串相关总结---2018年4月19日

雪风02的博客
雪风02的博客原创
2018年04月19日 18:34:18765浏览

数组排序方法总结

 注意:

  1.数组为引用传参,所有原数据会被改写; 

  2.数组元素的类型建议全部相同,否则会产生不可预见结果

  3.排序成功返回: true,失败返回: false

  可用常量:

1.SORT_REGULAR: [默认]正常比较单元(不改变类型)

2.SORT_NUMERIC: 单元被作为数字来比较

3.SORT_STRING: 单元被作为字符串来比较

4.SORT_NATURAL: 单元以“自然的顺序”对字符串进行排序

5.SORT_FLAG_CASE: 不区分大小写排序字符串

一. 正序: associate(关联的), key(键),前面加上这二个单词的首字母表示

1. sort(&$arr, $flag) 按值升序排列,键名按索引方式重置

2. asort(&$arr,$flag) 按值升序排列,键名保留与值的对应

3. ksort(&$arr,$flag) 按键名升序排列,适合于关联数组,键值对应关系不变

 二、反序: reversal 反转,函数前添加一个r即可

1. rsort(&$arr, $flag):对数组逆向排序

2. arsort(&$arr, $flag):对数组进行逆向排序并保持索引关系

3. krsort(&$arr, $flag):对数组按照键名逆向排序

三、自定义回调函数进行排序: usort(&$arr, functoin($a, $b){ #code })

 注意: 仅对值进行排序,忽略键名(即会重置键名)

总结:

①按照升序对数组中的元素排序,使用sort()函数,如果对关联数组排序,会丢失键值,变成索引数组;

②按照降序对数组中的元素排序,使用rsort()函数,如果对关联数组排序,会丢失键值,变成索引数组;

③根据值,以升序对关联数组进行排序,使用asort()函数,保留键值。

④根据键,以升序对关联数组进行排序,使用ksort()函数,保留键值。

⑤根据值,以降序对关联数组进行排序,使用arsort()函数,保留键值。

⑥根据键,以降序对关联数组进行排序,使用krsort()函数,保留键值。

实例化代码如下:

实例

<?php  

$arr = ['id'=>1, 'name'=>'liu', 'course'=>'php', 'grade'=>80, 5=>true];
echo '<pre>';
echo '<p>原始数组:</p>';
print_r($arr);
echo '<hr color="red">';

//使用sort()函数
echo '<hr color="red">';
echo '1.按照升序对数组中的元素排序,使用sort()函数:'.'<br>';
sort($arr);
print_r($arr);
//使用rsort()函数
echo '<hr>';
$arr = ['id'=>1, 'name'=>'liu', 'course'=>'php', 'grade'=>80, 5=>true];
echo '2.按照降序对数组中的元素排序,使用rsort()函数:'.'<br>';
rsort($arr);
print_r($arr);
//使用asort()
echo '<hr>';
$arr = ['id'=>1, 'name'=>'liu', 'course'=>'php', 'grade'=>80, 5=>true];
echo '3.根据值,以升序对关联数组进行排序,使用asort()函数:'.'<br>';
asort($arr);
print_r($arr);
//使用ksort()
echo '<hr>';
$arr = ['id'=>1, 'name'=>'liu', 'course'=>'php', 'grade'=>80, 5=>true];
echo '4.根据键,以升序对关联数组进行排序,使用ksort()函数:'.'<br>';
ksort($arr);
print_r($arr);
//使用arsort()
echo '<hr>';
$arr = ['id'=>1, 'name'=>'liu', 'course'=>'php', 'grade'=>80, 5=>true];
echo '5.根据值,以降序对关联数组进行排序,使用arsort()函数:'.'<br>';
arsort($arr);
print_r($arr);
//使用krsort()
echo '<hr>';
$arr = ['id'=>1, 'name'=>'liu', 'course'=>'php', 'grade'=>80, 5=>true];
echo '6.根据键,以降序对关联数组进行排序,使用krsort()函数:'.'<br>';
krsort($arr);
print_r($arr);

运行实例 »

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

运行结果如下:

4]8P}N~C0Q2%)YP_[5N8@XX.png

QL)ML(0EVL`C[E5O_Q5BQQO.png

二.

1. 字符串长度计算

       strlen($str):计算字符串的长度;

2. 字符串与数组之间的转换

       str_split($str,$length=1):按字符数量,将字符串分割为数组,默认为1;

       explode($delimiter,$str,$num):按分隔符,将字符串分割为数组,可指定数组元素数量;

       implode($glue, $str):按分隔符,将一维数组拼装成字符串,默认用空格分隔.


3. 字符串的查找与替换

      strpos($str1,$str2, $offset):查找$str1在$str1中首次出现的位置;

      strstr($str1, $str2):如果$str2是$str1的子串,返回子串,返回否则false,

                                     如果确定$str2是$str1的子串,推荐使用strpos(),速度更快;

      str_replace($str1, $str2, $str3, $num):子串替换,$num是替换次数

      substr_replace($str1,$str2,$str3,$start, $length):替换字符串的子串

下面用实例化来验证:

实例

<?PHP 

$str = 'html,css,jquery,php,mysql,thinkphp';

echo "<h2>字符串的长度以及与数组之间的转换:</h2>".'<hr color="green">';
echo "原始数据:",$str.'<hr color="red">';

//计算字符串长度
echo '字符串的长度是:'.strlen($str).'<hr>';

//字符串与数组之间的转换
//1.str_split($str,$length=1)按字符数量,将字符串分割为数组,默认为1
echo '<pre>'.'使用str_split函数后:<br>';
$str1=str_split($str,4);
print_r($str1); //默认一个字符转为数组中的一个元素,一个汉字2个字符一个元素

//2.implode($glue, $str):按分隔符,将一维数组拼装成字符串,默认用空格分隔
echo '<hr>使用implode函数后:<br>';
echo implode('',$str1).'<hr>';

//3.explode($delimiter,$str,$num):按分隔符,将字符串分割为数组,可指定数组元素数量
echo '使用explode函数后:<br>';
print_r(explode(',',$str,7)); 
//

//字符串的查找与替换
echo '<hr color="red">';

$str = 'html,css,jquery,php,mysql,thinkphp';
echo "<h2>字符串查找与替换:</h2>".'<hr color="green">';
echo "原始数据:",$str.'<hr color="red">';

//1.strpos($str,$needle, $offset)查找字符串首次出现的位置
echo "html的位置是:".strpos($str, 'html'),'<br>';//默认从头开始查找

//2.strstr($str1, $str2),如果$str2是$str1的子串,返回子串,返回否则false
echo strstr($str, 'css')?'找到':'没找到!','css!'.'<br>';  //返回子串及后面部分
echo 'css前面的有:'.strstr($str, 'css', true),'<br>'; 
//参数true,会返回子串前面部分
echo '<hr>';
//3.str_replace($str1, $str2, $str3, $num):子串替换,
echo '下面将php换成java:<br>';
echo str_replace('php','java',$str), '<br>';
//
echo '<hr>';
//4.substr_replace($str1,$str2,$str3,$start, $length):替换字符串的子串
//在$str中,从第5个索引位置起的2个字符,用'pppph'进行替换
//echo substr_replace($str,'pppph', 5, 2); 

echo '在css后面加上:3.0<br>';
echo substr_replace($str,'3.0,',9,0);

运行实例 »

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

运行结果:

KDU~J5E]N0A)UK@N`HCPSKK.png


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