博客列表 >4月18日作业-数组的排序及字符串操作

4月18日作业-数组的排序及字符串操作

黑猫警长的博客
黑猫警长的博客原创
2018年04月20日 17:28:50829浏览

实例

<?php 
echo '<h3>4月18日作业-数组的排序及字符串操作</h3><hr color="green">';


$arr = ['id'=>3, 'name'=>'zhu', 'course'=>'php', 'grade'=>60, 5=>true];
$arr5 = ['id'=>3, 'name'=>'zhu', 'course'=>'php', 'grade'=>60, 5=>true];
echo '<pre>';
echo '<p>原始数组:</p>';
print_r($arr5);
//1.sort(&$arr, $flag):正序且键名重置
echo '<hr>';
echo '<p>1.正序且键名重置,排序后:</p>';
sort($arr);
sort($arr, SORT_REGULAR);  //忽略类型,其实就是按类型分组,仅在分组中对同类型数据进行排序
sort($arr, SORT_NUMERIC);  //全部视为数值类型,字母全转为0,true转为1,
sort($arr, SORT_STRING);   //全部视为字符类型,因为数字的ASCII码要小于字母,所有排在前面
sort($arr, SORT_NATURAL);  //自然排序,与SORT_STRING结果一致
sort($arr, SORT_FLAG_CASE); //忽略大小写,PHP5.4+以上支持
print_r($arr);

echo '<hr>';
// echo '<p>原始数组:</p>';
// print_r($arr5);
//2.asort($arr, $flag):正序且键名保留
echo '<p>2.正序且键名保留,排序后:</p>';
asort($arr); 
// 等价于 
asort($arr, SORT_REGULAR);  //忽略类型,但是键值对应关系得到了保留
print_r($arr);

echo '<hr>';
// echo '<p>原始数组:</p>';
// print_r($arr5);
//3.ksort(&$arr, $flat):键名正序排列
echo '<p>3.键名正序排列,排序后:</p>';
ksort($arr);  //因为忽略了类型,5与其它键名类型不同,所以在最后面
ksort($arr,SORT_STRING); //全部视为字符类型,5的ASCII码在普通字母之前
ksort($arr,SORT_NUMERIC); //全部视为数值,则字母全转为0,5就是排到了最后面
print_r($arr);


echo '<hr>';
// echo '<p>原始数组:</p>';
// print_r($arr5);
//4.rsort(&$arr):数组反转,忽略原键名
echo '<p>4.数组反转,忽略原键名,排序后:</p>';
rsort($arr); //忽略类型分组排序
print_r($arr);

echo '<hr>';
// echo '<p>原始数组:</p>';
// print_r($arr5);
//5. arsort(&$arr):数组反转,保留键名
echo '<p>5.数组反转,保留键名,排序后:</p>';
arsort($arr, SORT_STRING); //键值对应关系不变,反转是指由大到小,所以ASCII小的数字字符排到了后面
print_r($arr);

echo '<hr>';
// echo '<p>原始数组:</p>';
// print_r($arr5);
//6. krsort(&$arr): 键名反转排序 
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];
// echo '<p>原始数组:</p>';
// print_r($arr1);
//下面我们用自定义回调方法对$arr1进行由小到大排列
echo '<p>排序后:</p>';
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">';
echo '<h3>字符串长度计算</h3>';
//strlen()/mb_strlen()
$sitename = 'PHP中文网';
$encoding = mb_internal_encoding();//获取字符编码集
echo '内部编码是:',$encoding,'<br>';
echo strlen($sitename),'<br>';//计算长度,一个中文字为3个字符长度
echo mb_strlen($sitename,'UTF-8'),'<br>';//按照UTF-8编码获取值的真实长度

echo '<hr color="red">';
echo '<h3>字符串与数组之间的转换</h3>';
//str_split()/explode()/implode()
$abc = 'html,css,php.java,mysql';
echo '原始字符串:'.$abc.'<br>';
// print_r(str_split($abc,5));//按照参数将字符串进行分割为数组,若不输入默认为1
// print_r(explode(',',$abc));//按照,分割,按照分隔符分割为数组
// print_r(explode(',',$abc,3));//按照,分割开,并只分割为3个部分,多余部分全部存入最后一个元素
//implode();垵分隔符,将数组拼接成字符串
$abc1 = explode(',',$abc);
print_r($abc1);
echo implode(' > ',$abc1);

echo '<pre>';
$str = 'html,css,jquery,php,mysql,thinkphp';
echo '<p>原始字符串:'.$str.'</p>';
//1.str_split($str,$length=1)按字符数量,将字符串分割为数组,默认为1
// print_r(str_split($str)); //默认一个字符转为数组中的一个元素
// print_r(str_split($str,5)); //5个一组进行转换

echo '<hr>2:按分隔符,将字符串分割为数组<br>';
//2.explode($delimiter,$str,$num):按分隔符,将字符串分割为数组,可指定数组元素数量
print_r(explode(',',$str)); //用','号进行分割字符串
// print_r(explode(',',$str,5)); //指定数组必须是5个元素,最后一个元素保存全部剩余数据

echo '<hr>3:垵分隔符,将数组拼接成字符串<br>';
//3.implode($glue, $str):按分隔符,将一维数组拼装成字符串,默认用空格分隔
$arr2 = explode(',', $str);
echo implode(' ', $arr2), '<br>'; //用空格分隔
echo implode(',',$arr2), '<br>'; //用,分隔
echo implode('>>',$arr2),'<br>'; //用--分隔


echo '<hr color="red">';
echo '<h3>字符串的查找与替换</h3>';
/**
 * 1.strpos($str1,$str2):查找$str2在$str1中出现的位置
 * 2.strstr($str1,$str2):如果$str1是$str1的字串,如果是返回ture,否则返回false
 * 3.str_replace(),子串替换
 */
$black = '13812345678';
$sfz = '450127197911308569';
echo '<p>原始手机号:'.$black.'<br>';
echo '原始身份证:'.$sfz.'</p>';
echo '<hr>';
//1.strpos($str1,$str2):查找$str2在$str1中出现的位置
echo '查找手机号数字8第一次出现的索引位置:';
echo strpos($black,'8'),'<br>';
echo '查找身份证数字1第一次出现的索引位置:';
echo strpos($sfz,'1'),'<br>';
echo '<hr>';
//2.strstr($str1,$str2):如果$str2是$str1的字串,如果是返回ture,否则返回false
echo strstr($black,'23'),'<br>';
echo strstr($sfz,'79'),'<br>';
echo '<hr>';

// 3.str_replace(),子串替换,WWW 替换成WAP
echo str_replace('138', '136', $black),'<br>';
echo str_replace('1979', '1991', $sfz),'<br>';
echo '<hr>';

//4.substr_replace(),替换子串的子串第5个开始2个,替换为
echo substr_replace($black, '****', 3,4),'<br>';
echo substr_replace($sfz, '********', 10,8);

运行实例 »

点击 "运行实例" 按钮查看在线实例

0797.ltd_0418_.jpg

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议