数组函数作业

原创 2018-12-13 21:48:27 458
摘要:<?php /**  * 数组的键值处理函数详解  * array_value($arr):返回元素的值组成的新数组  * array_column($arr,$col,$index):返回多维数组中的一列  * array_keys($arr,$val,$bool):返回元素的键名组成的新数组  *&
<?php
/**
 * 数组的键值处理函数详解
 * array_value($arr):返回元素的值组成的新数组
 * array_column($arr,$col,$index):返回多维数组中的一列
 * array_keys($arr,$val,$bool):返回元素的键名组成的新数组
 * in_array($val,$arr,$bool):判断元素中是否存在某个值
 * array_search($val,$arr,$bool):查找指定值,并返回该值的键名
 * array_key_exists($key,$arr): 判断数组中是否存在指定的键名
 * array_flip($arr):键值对调
 * array_reverse($arr) 将原数组中的元素顺序翻转
 *
 * print_r($arr,$bool)
 * var_dump($arr1,$arr2...)
 * var_export($arr,$bool)
 */
/*
 * 数组与变量和字符串之间的转换
 *
 * list($var1,$var2...) 将数组中的索引元素转为变量
 * extract($arr,$flag) 将数组中的关联元素转为变量
 * compact($str1,$str2..) 将变量转为关联数组,与上面相反
 * explode($delimiter,$str,$limit) 将字符串转为数组  $limit:3 分为3个元素,剩下的都放到最后一个元素里面,-3指的是删除后面三个元素
 * implode($glue,$arr) 将数组转为字符串
 *
 * */
$arr =['小龙女','php','80'];
list($name,$kec,$grade)=$arr;
echo $name,',',$kec,',',$grade,'<hr>';
$arr=['id'=>'10','name'=>'小龙女','gz'=>'5000'];
extract($arr);
echo $id,'*',$name,'*',$gz;
//echo var_export($arr,true);
echo '<hr>';
//将变量转换为关联数组 compact()
$name='陈近南';
$faction='天地会';
$position='舵主';
$arr = compact('name','faction','position');
echo var_export($arr,true);
echo '<hr>';
//explode()
$lang='html,css,js,php,java,json';
$arr=explode(',',$lang,-3);
    echo var_export($arr,true);
echo '<hr>';
//implode($glue,$arr) 将数组转换成字符串
$arr=['首页','公司简介','产品展示','新闻动态','联系我们'];
//echo implode(',',$arr);
echo var_export('<a href="#">'.implode('</a> | <a href="#">',$arr).'</a>',true).'<hr>';
//生成sql语句
//'INSERT INTO 表名 (字段列表) VALUES (值列表)';
$member =['name'=>'rambo','sex'=>'男','age'=>'32','address'=>'长沙'];
$sql = 'INSERT INTO member';
//获取数组中的键,生成键的数组
$key=array_keys($member);
//print_r($key);
//将数组转换成字符串,生成字段列表
$key2 = implode('`,`',$key);
// 拼接sql语句
$sql .= ' (`'.$key2.'`)';
//echo $sql;
//取得数组元素的值,生成值的数组
$value = array_values($member);
//print_r($value);
//将数组转为字符串,生成值的列表
$value2 =implode("','",$value);
//echo $value2;
//拼接sql语句
$sql .= " VALUES ('".$value2."')";
echo $sql; //INSERT INTO member (`name`,`sex`,`age`,`address`) VALUES ('rambo','男','32','长沙')
/*
 * 数组的切割与填充
 *
 * array_slice($arr,$offset,$length,$bool);从数组中返回指定的元素,$offset从什么位置开始,保留键名$bool设置true
 * array_splie(&$arr,$offset,$length);从数组中删除或 替换指定元素 &表示引用传参,直接改变原数组元素,删除直接在后面跟字符串或数组
 * array_chunk($arr,$size,$bool);将大数组切割成若干个小数组
 *
 * */
/*
 * 用数组实现堆栈与队列操作
 *
 * 堆栈是后进先出,队列是先进先出
 *
 * array_push($arr,$value) 从数组的尾部添加
 * array_pop($arr) 从尾部删除
 * array_unshift($arr,$value) 从头部添加
 * array_shift($arr) 从头部删除
 *
 * */
echo '<hr>';
/*
 * 数组元素的遍历与回调处理
 * array_filter($arr,$callback) 用回调过滤数组元素,不传入回调,会过滤掉数组中为false的元素
 * array_walk(&$arr,$callback,$var) 遍历元素并回调处理,,键在后面
 * */
$arr = ['0','1','33','',false,null,'admin'];
//不传入回调
echo var_export(array_filter($arr),true).'<hr>';
//传入回调
$arr2 =array_filter($arr,function ($value){
    return ($value !=='33');
});
echo var_export($arr2,true).'<hr>';
$arr3 =['name'=>'rambo','stu'=>'PHP'];
array_walk($arr3,function (&$value,$key,$name){
    if($value==$name){
        exit('无权查看<hr>');
    }else{
        echo $key.'::'.$value.'<br>';
    }
},'admin');
/*
 * 数组的排序
 *
 * 根据值排序:
 * 忽略键名:sort()升序,rsort()降序,usort()回调  //针对索引数组   回调是2个比较
 * 保留键名:asort()升序,arsort()降序,uasort()回调  //针对关联数组
 *
 * 根据键名排序:
 * ksort()升序,krsort()降序,uksort()回调
 *
 * 回调主要用于二维数组排序
 * strcmp() 字符串比较
 * */
//substr(函数名,第几个位置开始,取几个元素);取函数的某个位置
echo '<hr>';
$arr=[
    ['name'=>'张三','course'=>'语文','grade'=>'90'],
    ['name'=>'李四','course'=>'语文','grade'=>'80'],
    ['name'=>'王五','course'=>'语文','grade'=>'75']
];
$arr2=uasort($arr,function ($m,$n){
   return strcmp($m['grade'],$n['grade']);
//   $temp= strcmp($m['grade'],$n['grade']);
//   switch ($temp){
//        case ($temp>0):
//            return 1;
//            break;
//        case ($temp<0):
//            return -1;
//            break;
//        case ($temp=0):
//            return 0;
//            break;
//
//    }
});
echo '<pre>'.var_export($arr,true).'<hr>';
/*
 * range($start,$end,$step)生成指定范围与步长的数组 $step 间隔几个的意思
 * array_unipue($arr) 删除数组中值重复的元素(键名不存在重复的)
 * array_fill($arr,$value) 用户指定元素初始化一个数组
 * array_rand($arr,$size) 从数组中随机取出部分元素
 * shuffle($arr) 将数组元素随机打乱显示
 * array_merge($arr1,$arr2) 将多个数组进行合并,键名相同则覆盖
 *
 * */


批改老师:韦小宝批改时间:2018-12-14 09:26:53
老师总结:写的很棒!总结的非常清楚!注释写的也很详细!课后要记得把几个常用的数组函数多练习几遍哦!继续加油吧!

发布手记

热门词条