设为首页 收藏本站
查看: 552|回复: 0

[经验分享] PHP系列(三)PHP数组与数据结构

[复制链接]

尚未签到

发表于 2018-12-13 09:30:28 | 显示全部楼层 |阅读模式
    PHP数组与数据结构
  数组是把若干变量按有序的形式组织起来的一种形式。
  这些数据元素的集
  数组分为一维二维三维、索引数组(数组索引是整数)和关联数组
  1)数组的声明
  1、一个数组中存的多个内容、数组中的内容叫作“元素”
  2、每个元素都是由健和值组成的Key/value
  $a=array(“one”=>”111”,”two”=>”2222”);
  3、下标有二种类型:一种是整数(索引数组)、一种是字符串(关联数组)
  4、[]和{}来操作下标
  5、在使用下标时、如果是关联数组、一定要使用引号、不要使用常量名称(各种类型都可以作下标、但会强制转换)
  6、数组的自动增涨下标、默认从0开始、出现最大值加1
  7、关联数组的字符串下标、不影响索引下标的排列规则
  8、使用array()函数声明数组、默认索引下标从0开始
  9、使用=>符号指定下标
  Php5.4以后可以像其他语言一样声明数组$arr=[“a”,”bb”];
  10、删除数组中的一个元素使用unset(但不会重建索引)删除后重建用array_values()函数
  二维数组(数组的数组)三维数组 $group=array(array(“1”,”2”), array(“1”,”2”),)
  (2for循环遍历数组
  当数组下标不是连续的时候、For循环遍历不了数组
  $arr=array(“aa”,”bb”,”cc”);
  For($i=0;$i自定义变理(值)){
  }
  $arr=array(“11”,”bb”);
  Foreach($arras $key => $values){
           Echo “{$key}====>{$values}”
  }
  
  $arr= array(
           array("name"=>"ssw","age"=>22, "性别"=>"sex"),
           array("name"=>"ssw1","age"=>29, "性别"=>"six"),
           array("name"=>"ssw2","age"=>26, "性别"=>"sex")
  );
  
  echo"";
  echo"数组转为表格";
  
  foreach($arras $row){
           echo "";
           foreach($row as $col){
                     echo"".$col."";
           }
           echo "";
  }
  echo"";
  (4)联合使用list() each() while()循环遍历使用
  List()作用:
  1、等号左边用list()函数、等号右边只能是一个数组
  2、数组中有几个元素、在list()中就用几个参数、而且参数必须是变量、不能是值
  3、只能将索引数组(下标是连续)、转为变理、是按下标0开始找的
  4、可以在list()参数中通过、空项选择性接收数组中的元素
  $str=”天涯_海角”;
  List($name,$sea)=explode(“_”,$str);
  Echo $name;
  Echo $sea;
  天涯
  海角
  Each()是一个函数、参数为数组、返回值也是一个数组
  1、返回值是一个数组、数组有4个固定元素、下标固定的1 值 value值 0 下标key下标
  2、each()只处理当前元素、将当前元素转为数组信息、处理完后、指针向下一个元素移动
  3、如果指定已经结束了、在使用each()获取元素、返回false
  $arr =array("one"=>"Thinkphp","two"=>"Yii", "three"=>"smarty");
  while(list($key,$val) = each($arr)){
  echo"{$key}=>{$val}";
  }
  显示:
  one=>Thinkphp
  two=>Yii
  three=>smarty
  5)数组内部指针遍历数组
  控制指定的位置next(下一个)  prev(上一个)  end(最后一个)  reset(第一个)
  Key()获取数组当前下标 current()获取数组当前值
  $arr =array("one"=>"Thinkphp","two"=>"Yii", "three"=>"smarty");
  Echo “当前位置:” . ”key($arr)”. ”==>” . ”current($arr)” . ””;
  (6)php超全局数组
  超全局数组(变量)在系统中已预定好的、可以直接调用
  $_SERVER   服务器变量
  $_ENV    环境变量
  $_GET    http get变量  接收用户通过url向服务器传的参数
  $_POST    http post变量  接收用户通过http协议向服务器传的参数
  $_REQUEST    request变量  此关联数组包含$_GET $_POST$_COOKIE中全部内容
  $_FILES    http文件上传变量
  $_COOKIE    http cookies
  $_SESSION    session变量
  $_GLOBALS    global变量
  Print_r($_SERVER);
  
  7PHP常用数组函数
  数组的键值操作函数(函数主要看功能 返回值)
  Array_values()返回数组中所有的值,返回数组。
  $sh=array(“shang”=>”上海”,”海”=>”海南”);
  Print_r(Array_values($sh));
  显示为:Array ( [0] => ”上海” [1] => ”海南” )
  Array_keys(array,value,strict)返回数组中所有的键,返回数组。
  Array为数组  value可选指定键值、然后只有该键值对应的键名被返回
  Strict 可选 true 依赖类型 faLse不依赖类型
  
  显示为:Array ( [0] => 3 )
  In_array(search, array,type)搜索数组中是否存在指定的值,返回真假。
  Search 必需、规定要在数组搜索的值
  Array 必需、规定要搜索的数组
  Type 可选、设置该参数为 true,则检查搜索的数据与数组的值的类型是否相同。
  $sh=array(“shang”=>”上海”,”海”=>”海南”);
  If(in_array(“上海”, $sh)){
  Echo“在数组中”
  }else{
  Echo“不在数组中”:
  }
  显示:在数组中
  array_search(search,array, type)函数在数组中搜索某个键值,并返回对应的键名,如果没找到,则返回 false
  Search 必需、规定要在数组搜索的值
  Array 必需、规定要搜索的数组
  Type 可选、设置该参数为 true,则检查搜索的数据与数组的值的类型是否相同。
  $a=array("a"=>"5","b"=>5,"c"=>"5");
  echoarray_search(5,$a,true);
  显示:b
  Array_key_exists(search, array, type)搜索数组中是否存在指定的键,返回真假。
  Search 必需、规定要在数组搜索的值
  Array 必需、规定要搜索的数组
  Type 可选、设置该参数为 true,则检查搜索的数据与数组的值的类型是否相同。
  $a=array("a"=>"5","b"=>5,"kong"=>null);
  If(array_key_exists(“kong”, $a)){
  Echo“在数组中”
  }else{
  Echo“不在数组中”:
  }
  显示:在数组中
  Array_flip(array)交换数组中所有的键名以及它们关联的键值、返回数组(只能处理整数和字符串)
  $a=array("a"=>"5","b"=>5,"c"=>"cisoco");
  print_r(array_flip($a));
  显示:Array ( [5] => b [cisoco] => c )  //重复下标会被后面相同键名的覆盖
  Array_reverse(array,preserve)将原数组中的元素顺序翻转,创建新的数组并返回
  Array 必需、规定数组
  Preserve可选(true/false)规定是否保留原始数组的键名
  $a=array("a","b","c");
  $reverse=array_reverse($a);
  $preserve=array_reverse($a,true);
  
  print_r($a);
  echo"";
  print_r($reverse);
  echo"";
  print_r($preserve);
  显示为:
  Array( [0] => a [1] => b [2] => c )
Array ( [0] => c [1] => b [2] => a )

Array ( [2] => c [1] => b [0] => a )

  统计数组元素的个数与唯一性
  Count(array,mode)返回数组中元素的数目(strlen是统计字符串长度)
  Array 必需、规定数组
  Mode 可选、0为不对多维数组统计、1递归统计数组中的元素
  $cars=array
  (
  "Volvo"=>array( "XC60", "XC90"),
  "BMW"=>array("X3","X5"),
  "Toyota"=>array("Highlander")
  );
  echo "常规计数:" .count($cars)."";
  echo "递归计数:" .count($cars,1);
  显示为:
  常规计数:3
递归计数:8
  Array_count_values(array)统计数组中所有值出现的次数、返回一个数组
  $a=array("A","Cat","Dog","A","Dog");
  print_r(array_count_values($a));
  显示为:
  Array ( [A] => 2 [Cat] => 1 [Dog] => 2 )
  
  Array_unique(array)移除数组中的重复的值,并返回结果数组
  当几个数组元素的值相等时,只保留第一个元素,其他的元素被删除
  $a=array("a"=>"red","b"=>"green","c"=>"red");
  print_r(array_unique($a));
  显示为:Array ( [a] => red => green )
  使用回调函数处理数组的函数
  Array_filter(array,callbackfunction);用回调函数过滤数组中的值、返回原数组
  Callbackfunction 必需 规定要使用的回调函数
  $arr = array(1,3,4,false,-2,-1,-6,null,-8);
  var_dump(array_filter($arr));
  echo "";
  function myfun($value){
  if($value>= 0)
  returntrue;
  else
  returnfalse;
  }
  var_dump(array_filter($arr,"myfun"));
  var_dump(array_filter($arr,function($value){
  return!($value%2==0);
  }));
  显示为:
  array(7){ [0]=> int(1) [1]=> int(3) [2]=> int(4) [4]=> int(-2) [5]=>int(-1) [6]=> int(-6) [8]=> int(-8) }
array(5) { [0]=> int(1) [1]=> int(3) [2]=> int(4) [3]=> bool(false)[7]=> NULL }

  array_walk(array,myfunction, userdata)对数组中的每个元素应用用户自定义函数。在函数中,数组的键名和键值是参数
  array必需。规定数组。
  myfunction必需。用户自定义函数的名称。
  Userdata可选。规定用户自定义函数的参数
  事例一:
  $arr = array(1,2,3,4,5);
  function myfun(&$value){
  $value=$value*$value;
  }
  print_r($arr);
  echo "";
  array_walk($arr,"myfun");
  print_r($arr);
  显示为:
  Array( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 )
Array ( [0] => 1 [1] => 4 [2] => 9 [3] => 16 [4] => 25 )

  事例二:
  $_arr = array(22,44,66,76,43,24);
  array_walk($_arr, function($value,$key){
  var_dump($value, $key);
  echo"";
  });
  显示:int(22) int(0)
  int(44) int(1)
  int(66) int(2)
  int(76) int(3)
  int(43) int(4)
  int(24) int(5)
  事例三:
  $arr =array("one"=>1,"two"=>2,"three"=>3,"four"=>4,"five"=>5);
  function myfun($key,$value){
  echo"{$key}===={$value}";
  }
  array_walk($arr,"myfun");
  显示为:
  1====one
2====two
3====three
4====four
5====five

  事例四:
  $arr =array("one"=>1,"two"=>2,"three"=>3,"four"=>4,"five"=>5);
  array_walk($arr, function($v,$k,$str){
  echo"{$k} {$str} {$v}";
  }, "++++");
  print_r($arr);
  echo "";
  显示为:
  1++++one
2++++two
3++++three
4++++four
5++++five

  Array_map(callback,$array1,$array2)将回调函数作用到给定数组的单元上、返回一个数组。
  callback 回调函数
  array 为数组
  $arr=array(1,2,3,4);
  $brr=array("one","two");
  function myfun($v,$bv){
  echo" $v --- $bv ";
  return1;
  }
  $rarr = array_map("myfun",$arr,$brr);
  print_r($rarr);
  显示为:
  1--- one
2 --- two

3 ---

4 ---

Array ( [0] => 1 [1] => 1 [2] => 1 [3] => 1 )

  $arr=array(1,2,3);
  $brr=array("one","two");
  $rarr = array_map(null,$arr,$brr);
  echo "";
  print_r($rarr);
  echo "";
  显示为:
Array(   [0] => Array        (            [0] => 1            [1] => one        )    [1] => Array        (            [0] => 2            [1] => two        )    [2] => Array        (            [0] => 3            [1] =>        ))  数组的排序函数
  1、冒泡法进行排序实例
  代码:

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-650780-1-1.html 上篇帖子: 添加php模块 imagick 下篇帖子: 关于php虚拟主机的配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表