批改状态:未批改
老师批语:
4月18日作业
代码:
<meta charset="utf-8">
<?php
echo '<h3>作业:4月18日</h3> <hr color="red" size="3">';
echo '<h3>1、数组排序方法总结</h3> <hr color="blue">';
$arr = ['id'=>3, 'name'=>'张三', 'course'=>'css', 'ler'=>'PHP', 5=>true];
echo '<pre>';
echo '<p>原始数组:</p>';
print_r($arr);
echo '<hr>';
//1.sort(&$arr, $flag):正序且键名重置
// sort($arr);
echo '<p>(1)、正序排列数组:</p>';
sort($arr);
print_r($arr);
echo '<hr>';
sort($arr, SORT_REGULAR); //忽略类型,其实就是按类型分组,仅在分组中对同类型数据进行排序
print_r($arr);
echo '<hr>';
sort($arr, SORT_NUMERIC); //全部视为数值类型,字母全转为0,true转为1,
print_r($arr);
echo '<hr>';
sort($arr, SORT_STRING); //全部视为字符类型,因为数字的ASCII码要小于字母,所有排在前面
print_r($arr);
echo '<hr>';
sort($arr, SORT_NATURAL); //自然排序,与SORT_STRING结果一致
print_r($arr);
echo '<hr>';
sort($arr, SORT_FLAG_CASE); //忽略大小写,PHP5.4+以上支持
print_r($arr);
echo '<hr color="blue">';
echo '<p>(2)、正序且键名保留</p>';
//2.asort($arr, $flag):正序且键名保留
asort($arr);
//等价于
print_r($arr);
echo '<hr>';
asort($arr, SORT_REGULAR); //忽略类型,但是键值对应关系得到了保留
print_r($arr);
echo '<hr>';
echo '<p>(3)、键名正序排列</p>';
//3.ksort(&$arr, $flat):键名正序排列
ksort($arr);
print_r($arr);
echo '<hr>';
//因为忽略了类型,5与其它键名类型不同,所以在最后面
ksort($arr,SORT_STRING);
print_r($arr);
echo '<hr>';
//全部视为字符类型,5的ASCII码在普通字母之前
ksort($arr,SORT_NUMERIC);
print_r($arr);
echo '<hr>';
// 全部视为数值,则字母全转为0,5就是排到了最后面
echo '<p>(3)、键名正序排列</p>';
//4.rsort(&$arr):数组反转,忽略原键名
rsort($arr); //忽略类型分组排序
print_r($arr);
echo '<hr>';
//5. arsort(&$arr):数组反转,保留键名
arsort($arr, SORT_STRING); //键值对应关系不变,反转是指由大到小,所以ASCII小的数字字符排到了后面
print_r($arr);
echo '<hr>';
//6. krsort(&$arr): 键名反转排序
krsort($arr, SORT_STRING); //键名全部视为字符类型,按字母表逆序排列键名
print_r($arr);
echo '<hr>';
//7. usort(&$arr, callback()): 用户自定义排序方式
//这里介绍一个非常简单的例子,更复杂的案例,会在实战中进行介绍
$arr1 = [10, 4, 22, 99, 35, 18];
//下面我们用自定义回调方法对$arr1进行由小到大排列(由大到小)
// usort($arr1, function($a, $b) {
// $res = $a - $b;
usort($arr1, function($a, $b) {
$res = $b - $a;
if ($res == 0) {
return 0;
} else if ($res > 0) {
return true;
} else {
return false;
}
});
print_r($arr1);
echo '<hr color="red" size="3">';
echo '<h3>2、函数长度计算</h3>';
/**
* 1.strlen($str)
* 2.mb_strlen($str, $encoding)
*/
$siteName = 'php中文网-www.php.cn';
//获取内部字符编码集
$encoding = mb_internal_encoding();
echo '内部字符编码集: ',$encoding,'<br>';
//1.strlen($str):获取字节表示的字符串长度
//utf8模式下,一个中文字符用三个字节表示
echo strlen($siteName),'<br>';
//2.mb_strlen($str, $encoding) :获取字符数表示的长度
echo mb_strlen($siteName, $encoding),'<br>';
//省略第二个参数,会使用系统默认的字符编码集,当前是utf-8
echo mb_strlen($siteName),'<br>'; //返回值不变
echo '<hr color="red" size="3">';
echo '<h3>3、串与数组之间的转换</h3>';
/**
* 1.str_split($str,$length=1),按字符数量,将字符串分割为数组,默认为1
* 2.explode($delimiter,$str,$num):按分隔符,将字符串分割为数组,可指定数组元素数量
* 3.implode($glue, $str):按分隔符,将一维数组拼装成字符串,默认用空格分隔
*/
echo '<pre>';
$str = 'html,123,jquery,php,数据库,thinkphp';
echo '<p>原始字符串:'.$str.'</p>';
//1.str_split($str,$length=1)按字符数量,将字符串分割为数组,默认为1
//print_r(str_split($str)); //默认一个字符转为数组中的一个元素, 37个元素
print_r(str_split($str,5)); //5个一组进行转换
echo '<hr>';
//2.explode($delimiter,$str,$num):按分隔符,将字符串分割为数组,可指定数组元素数量
print_r(explode(',',$str)); //用','号进行分割字符串
echo '<hr>';
print_r(explode(',',$str,5)); //指定数组必须是5个元素,最后一个元素保存全部剩余数据
echo '<hr>';
//3.implode($glue, $str):按分隔符,将一维数组拼装成字符串,默认用空格分隔
$arr2 = explode(',', $str);
echo implode(' ', $arr2), '<br>'; //用空格分隔
echo implode('!',$arr2), '<br>'; //用,分隔
echo implode('###',$arr2), '<br>'; //用--分隔
echo '<hr color="red" size="3">';
echo '<h3>4、字符串函数查找与替换</h3><hr color="green">';
/**
* 1.strpos($str1,$str2, $offset)查找$str1在$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):替换字符串的子串
*/
$str = 'I love you - php or mysql';
//1.strpos($str,$needle, $offset)查找字符串首次出现的位置
echo strpos($str, 'p'),'<br>'; //默认从头开始查找
echo strpos($str, 'p', 14),'<br>'; //从索引5开始查找
//2.strstr($str1, $str2),如果$str2是$str1的子串,返回子串,返回否则false
echo strstr($str, 'php'),'<br>'; //返回子串及后面部分
echo strstr($str, 'php', true),'<br>'; //参数true,会返回子串前面部分
echo '<hr>';
//3.str_replace($str1, $str2, $str3, $num):子串替换,
echo str_replace('you','http://www',$str), '<br>';
echo '<hr>';
//4.substr_replace($str1,$str2,$str3,$start, $length):替换字符串的子串
//在$str中,从第5个索引位置起的2个字符,用'pppph'进行替换
echo substr_replace($str,'pppph', 13, 2);
echo '<hr color="red" size="3">';点击 "运行实例" 按钮查看在线实例
代码输出图片:

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号