批改状态:合格
老师批语:
今天是第十二天上课,朱老师讲了重点讲了数组排序和字符串的截取替换函数操作。
重要知识点:
1. 数组的排序:按值来排序:sort():升序;rsort():降序;usort():自定义排序
2. 按key键来排序:ksort():升序;krsort():降序;uksort():自定义排序
3. trim():清楚两边空格;ltrim():清楚左边空格;rtrim():清楚右边空格
4. str_pad():填充字符串
5. substr($str, $start, $length);//在$str取指定$start位置的$length长度的子串
6. strstr($str, $startstr, bool )//从字符为$startstr开始返回字符串,包括$startstr如果bool为true,则返回前面
7. strpos($str, $str, $start)//根据内容查询,返回字符串首次出现的位置,可以规定从何处开始查
8. str_replace()与substr_replace()
实例演示substr(),strstr(),strpos()函数
代码:
<?php
header('Content-type:text/html;charset=utf-8');
/**
* 三个字符串子串查询操作
*/
//以位置来查询子串
//substr($str, $start, $length);//在$str取指定$start位置的$length长度的子串
$str = 'nice to see you!!!';
echo substr($str, 10),'<br>';
echo substr($str, 10 ,4),'<br>';//查询从位置10开始4个长度的子串
echo substr($str, -3),'<br>';//从字符串的尾部取三个
//以字符来查询子串
//strstr($str, $startstr, bool )//从字符为$startstr开始返回字符串,包括$startstr如果bool为true,则返回前面的
$str = 'www.php.cn';
echo strstr($str, 'p',true);
//strpos($str, $str, $start)//根据内容查询,返回字符串首次出现的位置,可以规定从何处开始查询
echo strpos($str, 'p');
echo strpos($str, 'h',2);//从位置2开始查询字符串h,返回首次出现位置,不会因为2而变,只是让效率更高点点击 "运行实例" 按钮查看在线实例
实例演示str_replace(), substr_replace()
代码:
<?php
/**
* 字符串查找替换
*/
$str = 'nice to meet you!!!';
echo str_replace('to', 'too', $str),'<br>';
echo str_replace('meet', '', $str),'<br>';
echo str_replace( ['nice','to','meet'], 'you', $str),'<br>';//用一个代替多个
echo str_replace( ['nice','to','meet'], ['Welcome','to','china'], $str),'<br>';//用数组对应的代替字符
//str_ireplace();忽略大小写替换
echo str_ireplace('To', 'OPoo', $str),'<br>';
echo str_ireplace('meet', '', $str),'<br>';
//substr_replace();
echo substr_replace($str, 'welcome to china', 0),'<br>';//从0开始全部替换
echo substr_replace($str, 'welcome to china', 4, 4),'<br>';//从4开始用wel..ina 替换掉4个字符
echo substr_replace($str, 'welcome to china', 4, 0),'<br>';//插入
echo substr_replace($str, '', 6, 5),'<br>';//从6开始删除6个字符点击 "运行实例" 按钮查看在线实例
实例演示: usort()二维数组的排序
<?php
header('Content-type:text/html;charset=utf-8');
/**
* 数组的排序
*/
$arr = [10,20,30,40,23,89,9];
sort($arr);//自然排序
echo '升序排列:'.var_export($arr,true),'<br>';//升序
$arr = [10,20,30,40,23,89,9];//
rsort($arr);//降序
echo '降序排列:'.var_export($arr,true),'<br>';
$arr = [10,20,30,40,23,89,9];
usort($arr, function($var1, $var2){//这两个参数对应数组中相邻的两个数
$res = $var1 - $var2;
switch($res){
case ($res < 0): return -1; break;
case ($res > 0): return 1; break;
case ($res == 0): return 0; break;
}
});//用户自定义排序 升序
echo '自定义升序排列:'.var_export($arr,true).'<br>';
//usort中函数返回值若是1,即返回true,就调换两个数,若是为0和负数,即返回false,则不调换
usort($arr, function($var1, $var2){
$res = $var1 - $var2;
switch($res){
case ($res < 0): return 1; break;
case ($res > 0): return -1; break;
case ($res == 0): return 0; break;
}
});//降序
echo '自定义降序排序:'.var_export($arr,true).'<hr>';
//usort()多维数组的排序
$stu = [
['name' => 'a', 'grade' =>100],
['name' => 'b', 'grade' =>90],
['name' => 'c', 'grade' =>44],
['name' => 'd', 'grade' =>50],
['name' => 'e', 'grade' =>65],
['name' => 'f', 'grade' =>23],
];
echo '<pre>';
echo '排序前的数组是:',var_export($stu,true).'<br>';
usort($stu, function($m, $n){
// return strcmp($m['grade'], $n['grade']);
$res = $m['grade'] - $n['grade'];
switch($res) {
case ($res < 0):
return -1;
break;
case ($res > 0):
return 1;
break;
case ($res == 0):
return 0;
break;
}
});//按照grade来升序排列
echo '按grade升序排列的数组是:',var_export($stu,true).'<hr>';
usort($stu, function($m, $n){
$res = $m['grade'] - $n['grade'];
if($m['grade'] > 60 && $n['grade'] > 60 )
{
switch($res){
case ($res < 0): return -1; break;
case ($res > 0): return 1; break;
case ($res == 0): return 0; break;
}
}
if($m['grade'] < 60 && $n['grade'] < 60 )
{
switch($res){
case ($res < 0): return 1; break;
case ($res > 0): return -1; break;
case ($res == 0): return 0; break;
}
}
});//按照grade来升序排列
echo '按照grade排列,大于60分的升序排,小于60分的降序排,所得数组是:',var_export($stu,true).'<hr>';
$lang = ['name' => 'zmx', 'sex' => 'male', 'age' => 20];
//根据数组的键来进行排序
ksort($lang);//升序,更具根据键的首字母进行排序
echo '按key升序排列:'.var_export($lang,true).'<hr>';
krsort($lang);//降序
echo '按key降序排列:'.var_export($lang,true).'<hr>';
//自定义
//根据键名的第三个字母进行排序
$lang = ['name' => 'zmx', 'sex' => 'male', 'age' => 20];
uksort($lang, function($m, $n){
$a = substr($m,2,1);//取第三个字母
$b = substr($n,2,1);
return strcmp($a, $b);
});
echo '按key第三个字母升序排列:'.var_export($lang,true).'<hr>';点击 "运行实例" 按钮查看在线实例
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号