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