Correction status:Uncorrected
Teacher's comments:
<?php header('content-Type: text/html; charset=UTF-8'); ?> <?php /* 数组排序 * 一. 正序: 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 }) * 注意: 仅对值进行排序,忽略键名(即会重置键名) */ $arr = ['id' => 4, 'name' => 'jh', 'course' => 'php', 'grade' => 60, 5 => true]; echo '<pre>'; print_r($arr); echo '<hr color="red">'; //1.sort(&$arr, $flag):正序且键名重置 sort($arr); print_r($arr); echo '<hr color="red">'; sort($arr, SORT_REGULAR); //忽略类型,其实就是按类型分组,仅在分组中对同类型数据进行排序 print_r($arr); echo '<hr color="red">'; sort($arr, SORT_NUMERIC); //全部视为数值类型,字母全转为0,true转为1, print_r($arr); echo '<hr color="red">'; sort($arr, SORT_STRING); //全部视为字符类型,因为数字的ASCII码要小于字母,所有排在前面 print_r($arr); echo '<hr color="red">'; sort($arr, SORT_NATURAL); //自然排序,与SORT_STRING结果一致 print_r($arr); echo '<hr color="red">'; sort($arr, SORT_FLAG_CASE); //忽略大小写,PHP5.4+以上支持 print_r($arr); echo '<hr color="red">'; //2.asort($arr, $flag):正序且键名保留 asort($arr); print_r($arr); echo '<hr color="red">'; //等价于 asort($arr, SORT_REGULAR); //忽略类型,但是键值对应关系得到了保留 print_r($arr); echo '<hr color="red">'; //3.ksort(&$arr, $flat):键名正序排列 ksort($arr); print_r($arr); echo '<hr color="blue">'; ksort($arr); //因为忽略了类型,5与其它键名类型不同,所以在最后面 print_r($arr); echo '<hr color="blue">'; ksort($arr, SORT_STRING); //全部视为字符类型,5的ASCII码在普通字母之前 print_r($arr); echo '<hr color="blue">'; ksort($arr, SORT_NUMERIC); //全部视为数值,则字母全转为0,5就是排到了最后面 print_r($arr); echo '<hr color="blue">'; //4.rsort(&$arr):数组反转,忽略原键名 rsort($arr); //忽略类型分组排序 print_r($arr); echo '<hr color="blue">'; //5. arsort(&$arr):数组反转,保留键名 arsort($arr, SORT_STRING); //键值对应关系不变,反转是指由大到小,所以ASCII小的数字字符排到了后面 print_r($arr); echo '<hr color="blue">'; //6. krsort(&$arr): 键名反转排序 krsort($arr, SORT_STRING); //键名全部视为字符类型,按字母表逆序排列键名 print_r($arr); echo '<hr color="blue">'; echo '<p>字符串函数(一):长度计算</p><hr color="green">'; $siteName = 'php中文网asda'; //获取内部字符编码集 $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="blue">'; echo '<p>字符串函数(三):字符串与数组之间的转换</p><hr color="green">'; /** * 1.str_split($str,$length=1),按字符数量,将字符串分割为数组,默认为1 * 2.explode($delimiter,$str,$num):按分隔符,将字符串分割为数组,可指定数组元素数量 * 3.implode($glue, $str):按分隔符,将一维数组拼装成字符串,默认用空格分隔 */ echo '<pre>'; $str = 'html,css,jquery,php,mysql,thinkphp'; echo '<p>原始字符串:' . $str . '</p>'; //2.explode($delimiter,$str,$num):按分隔符,将字符串分割为数组,可指定数组元素数量 print_r(explode(',', $str)); //用','号进行分割字符串 print_r(explode(',', $str, 5)); //指定数组必须是5个元素,最后一个元素保存全部剩余数据 //3.implode($glue, $str):按分隔符,将一维数组拼装成字符串,默认用空格分隔 $arr2 = explode(',', $str); echo implode(' ', $arr2), '<br>'; //用空格分隔 echo implode(',', $arr2), '<br>'; //用,分隔 echo implode('--', $arr2), '<br>'; //用--分隔 /** * 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 = 'www.php.cnfdg'; //1.strpos($str,$needle, $offset)查找字符串首次出现的位置 echo strpos($str, 'p'),'<br>'; //默认从头开始查找 echo strpos($str, 'p', 5),'<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('www','http://www',$str), '<br>'; echo '<hr>'; //4.substr_replace($str1,$str2,$str3,$start, $length):替换字符串的子串 //在$str中,从第5个索引位置起的2个字符,用'pppph'进行替换 echo substr_replace($str,'pppph', 5, 2);
点击 "运行实例" 按钮查看在线实例
<?php header('content-Type: text/html; charset=UTF-8'); ?> <?php /* 数组排序 * 一. 正序: 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 }) * 注意: 仅对值进行排序,忽略键名(即会重置键名) */ $arr = ['id' => 4, 'name' => 'jh', 'course' => 'php', 'grade' => 60, 5 => true]; echo '<pre>'; print_r($arr); echo '<hr color="red">'; //1.sort(&$arr, $flag):正序且键名重置 sort($arr); print_r($arr); echo '<hr color="red">'; sort($arr, SORT_REGULAR); //忽略类型,其实就是按类型分组,仅在分组中对同类型数据进行排序 print_r($arr); echo '<hr color="red">'; sort($arr, SORT_NUMERIC); //全部视为数值类型,字母全转为0,true转为1, print_r($arr); echo '<hr color="red">'; sort($arr, SORT_STRING); //全部视为字符类型,因为数字的ASCII码要小于字母,所有排在前面 print_r($arr); echo '<hr color="red">'; sort($arr, SORT_NATURAL); //自然排序,与SORT_STRING结果一致 print_r($arr); echo '<hr color="red">'; sort($arr, SORT_FLAG_CASE); //忽略大小写,PHP5.4+以上支持 print_r($arr); echo '<hr color="red">'; //2.asort($arr, $flag):正序且键名保留 asort($arr); print_r($arr); echo '<hr color="red">'; //等价于 asort($arr, SORT_REGULAR); //忽略类型,但是键值对应关系得到了保留 print_r($arr); echo '<hr color="red">'; //3.ksort(&$arr, $flat):键名正序排列 ksort($arr); print_r($arr); echo '<hr color="blue">'; ksort($arr); //因为忽略了类型,5与其它键名类型不同,所以在最后面 print_r($arr); echo '<hr color="blue">'; ksort($arr, SORT_STRING); //全部视为字符类型,5的ASCII码在普通字母之前 print_r($arr); echo '<hr color="blue">'; ksort($arr, SORT_NUMERIC); //全部视为数值,则字母全转为0,5就是排到了最后面 print_r($arr); echo '<hr color="blue">'; //4.rsort(&$arr):数组反转,忽略原键名 rsort($arr); //忽略类型分组排序 print_r($arr); echo '<hr color="blue">'; //5. arsort(&$arr):数组反转,保留键名 arsort($arr, SORT_STRING); //键值对应关系不变,反转是指由大到小,所以ASCII小的数字字符排到了后面 print_r($arr); echo '<hr color="blue">'; //6. krsort(&$arr): 键名反转排序 krsort($arr, SORT_STRING); //键名全部视为字符类型,按字母表逆序排列键名 print_r($arr); echo '<hr color="blue">'; echo '<p>字符串函数(一):长度计算</p><hr color="green">'; $siteName = 'php中文网asda'; //获取内部字符编码集 $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="blue">'; echo '<p>字符串函数(三):字符串与数组之间的转换</p><hr color="green">'; /** * 1.str_split($str,$length=1),按字符数量,将字符串分割为数组,默认为1 * 2.explode($delimiter,$str,$num):按分隔符,将字符串分割为数组,可指定数组元素数量 * 3.implode($glue, $str):按分隔符,将一维数组拼装成字符串,默认用空格分隔 */ echo '<pre>'; $str = 'html,css,jquery,php,mysql,thinkphp'; echo '<p>原始字符串:' . $str . '</p>'; //2.explode($delimiter,$str,$num):按分隔符,将字符串分割为数组,可指定数组元素数量 print_r(explode(',', $str)); //用','号进行分割字符串 print_r(explode(',', $str, 5)); //指定数组必须是5个元素,最后一个元素保存全部剩余数据 //3.implode($glue, $str):按分隔符,将一维数组拼装成字符串,默认用空格分隔 $arr2 = explode(',', $str); echo implode(' ', $arr2), '<br>'; //用空格分隔 echo implode(',', $arr2), '<br>'; //用,分隔 echo implode('--', $arr2), '<br>'; //用--分隔 /** * 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 = 'www.php.cnfdg'; //1.strpos($str,$needle, $offset)查找字符串首次出现的位置 echo strpos($str, 'p'),'<br>'; //默认从头开始查找 echo strpos($str, 'p', 5),'<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('www','http://www',$str), '<br>'; echo '<hr>'; //4.substr_replace($str1,$str2,$str3,$start, $length):替换字符串的子串 //在$str中,从第5个索引位置起的2个字符,用'pppph'进行替换 echo substr_replace($str,'pppph', 5, 2);
点击 "运行实例" 按钮查看在线实例