今天是第十二天上课,朱老师讲了重点讲了数组排序和字符串的截取替换函数操作。
重要知识点:
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>';
运行实例 »点击 "运行实例" 按钮查看在线实例