Blogger Information
Blog 48
fans 2
comment 3
visits 37892
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
4月18日作业-数组的排序及字符串操作
黑猫警长的博客
Original
827 people have browsed it

实例

<?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

Correction status:Uncorrected

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post