加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

关于PHP编程中 数组 的基础知识

发布时间:2022-04-01 16:29:02 所属栏目:PHP教程 来源:互联网
导读:关于数组: PHP中的数组是复杂的,并且比许多其他高级语言中的数组更灵活。数组array是一组有序的变量,其中每个变量被叫做一个元素。数组可以被编号或者相关联,也就是数组的元素可以分别根据数字索引或文本化字符串来访问 PHP中,数组可以包含标量(整数,
  关于数组:
 
  PHP中的数组是复杂的,并且比许多其他高级语言中的数组更灵活。数组array是一组有序的变量,其中每个变量被叫做一个元素。数组可以被编号或者相关联,也就是数组的元素可以分别根据数字索引或文本化字符串来访问
 
  PHP中,数组可以包含标量(整数,布尔,字符串,浮点数)或复合值(对象甚至其他数组),并且可以包含不同类型的值
 
  1。创建数组
 
  PHP提供创建数组的array()语言结构
 
  $numbers = array(5,4,3,2,1);
 
  $words = array("web","database","application");
 
  echo $numbers[2];
 
  echo $words[0];
 
  ---------------------输出结果----------------------------------------
 
  3web
 
  ---------------------------------------------------------------------
 
  默认情况下,数组的第一个元素的索引为0。数组中包含的值可以通过使用方括号[]语法来检索和修改
 
  $numbers[5] = 0;
 
  数字化索引的数组可以创建位从任何索引值开始
 
  $numbers = array(1=>"one","two","three","four");
 
  也可以松散的索引
 
  $numbers = array(1=>"one",3=>"three",5=>"zero");
 
  可以通过给变量赋予一个没有参数的array()来创建空数组。然后可以通过使用方括号[]语法来添加值
 
  $error = array();
 
  $error[] = "no error!!!";
 
  $error[] = "second error!!!";
 
  echo $error[0];
 
  echo $error[1];
 
  ---------------------输出结果----------------------------------------
 
  no error!!!second error!!!
 
  ---------------------------------------------------------------------
 
  2.关联数组
 
  关联数组(associative array)使用字符串索引(或键)来访问存储在数组中的值
 
  关联索引的数组对于数据库层交互非常有用
 
  $newarray = array("first"=>1,"second"=>2,"third"=>3);
 
  echo $newarray["second"];
 
  $newarray["third"]=5;
 
  echo $newarray["third"];
 
  ---------------------输出结果----------------------------------------
 
  25
 
  ---------------------------------------------------------------------
 
  3.异构数组
 
  PHP数组可以包含不同种类的值
 
  $mixedBag = array("cat",42,8.5,false);
 
  var_dump(mixedBag);
 
  4.多维数组
 
  创建包含数组的数组,数组维数没有限制,但是一般很难想象一个多于三维的数组的用法
 
  $planets = array(array("MM",1,2),array("NN",3,4),array("BB",5,6),array("VV",7,8));
 
  print $planets[2][0];
 
  $planets2 = array("MM"=>array("AA"=>1,"SS"=>2),
 
  "NN"=>array("DD"=>3,"FF"=>4),
 
  "BB"=>array("GG"=>6,"HH"=>7,"PP"=>array("haha!!!!")),
 
  "VV"=>array("JJ"=>6,"KK"=>7,"LL"=>array("one","two")));
 
  print $planets2["VV"]["LL"][0];
 
  ---------------------输出结果----------------------------------------
 
  BBone
 
  ---------------------------------------------------------------------
 
  5.使用循环访问数组
 
  遍历数组的方法有很多(使用while,for循环)或者foreach语句,最容易的是foreach 语句
 
  $length = array(0,107,202,400,475);
 
  //将厘米转换为寸
 
  for($i=0;$i<5;$i )
 
  {
 
  echo ($length[$i]/3);
 
  }
 
  $j=0;
 
  while(isset($length[$j]))
 
  {
 
  echo ($length[$j]/3);
 
  $j ;
 
  }
 
  foreach($length as $cm)
 
  {
 
  echo ($cm/3);
 
  }
 
  ---------------------输出结果----------------------------------------
 
  0
 
  35.6666666667
 
  67.3333333333
 
  133.333333333
 
  158.333333333
 
  0
 
  35.6666666667
 
  67.3333333333
 
  133.333333333
 
  158.333333333
 
  0
 
  35.6666666667
 
  67.3333333333
 
  133.333333333
 
  158.333333333
 
  ---------------------------------------------------------------------
 
  foreach还可以迭代关联数组的值
 
  $sound = array("cow"=>"moo","dog"=>"woof",
 
  "pig"=>"oink","duck"=>"quack");
 
  foreach ($sound as $animal=>$noice)
 
  {
 
  echo "$animal 得叫声是这样的 $noice $noice......";
 
  }
 
  ---------------------输出结果----------------------------------------
 
  cow 的叫声是这样的 moo moo......
 
  dog 的叫声是这样的 woof woof......
 
  pig 的叫声是这样的 oink oink......
 
  duck 的叫声是这样的 quack quack......
 
  ---------------------------------------------------------------------
 
  6.使用数组指针
 
  与存储在数组中的键和关联值一起,PHP还拥有一个指向数组当前元素的内部索引,
 
  有几个函数使用并更新该数组索引来提供对数组元素的访问
 
  $a = array("a","b","c","d","e","f");
 
  echo current($a);
 
  each($a);
 
  key($a);//目前数组的指针,返回其索引
 
  echo current($a);//当前元素的值
 
  each($a);//返回当前元素的值并将内部索引指向下一个元素
 
  each($a);
 
  echo current($a);
 
  next($a);//指向下一个元素
 
  echo current($a);
 
  prev($a);//指向上一个元素
 
  echo current($a);
 
  end($a);//指向最后一个元素
 
  echo current($a);
 
  key($a);
 
  echo current($a);
 
  ---------------------输出结果----------------------------------------
 
  abdedff
 
  ---------------------------------------------------------------------
 
  7.基本的数组函数
 
  integer count(mixed var)//在数组中返回元素的个数,也可用于任何的变量
 
  number max(array numbers)//返回数组中的最大值
 
  number min(array numbers)//返回数组中的最小值
 
  boolean in_array(mixed needle,array haystack[,bollean strict])//查找数组中的值,第三个参数可选,强制执行类型检查
 
  mixed array_search(mixed needle,array haystack[,boolean strict])//返回 键 而不是布尔值,
 
  找不到时返回false,找到的元素如果正好是第一个元素,则返回0,而PHP会自动转化为false所以需要使用===判断,如下
 
  $a = array("a","b","c","d","e","f");
 
  $index = array_search("a",$a);
 
  if($index === false)
 
  echo "在数组a中未发现字符'a'";
 
  else
 
  echo "Index = $index";
 
  ---------------------输出结果----------------------------------------
 
  Index = 0
 
  ---------------------------------------------------------------------
 
  array array_reverse(array source[,bool preserve_keys])//逆转数组,生成一个新数组,可选参数为true时,保留索引和元素之间的关联
 
  $a = array("a","b","c","d","e","f");
 
  $newa = array_reverse($a);//直接翻转
 
  echo $newa[0];
 
  $newb = array_reverse($a,true);//依旧保留了索引和元素之间的关联
 
  echo $newb[0];
 
  ---------------------输出结果----------------------------------------
 
  fa
 
  ---------------------------------------------------------------------
 
  sort(array subject[,integer sort_flag])//根据 值 进行升序排列(在原数组中重新排列元素)
 
  rsort(array subject[,integer sort_flag])//根据 值 进行降序排列(在原数组中重新排列元素)
 
  可选参数可以指定为按数字方式SORT_NUMERIC还是字符串方式SORT_STRING或者通常的方式SORT_REGULAR排序
 
  sort()、rsort()可以用于关联数组,但是 键 将丢失
 
  asort(array subject[,integer sort_flag])//根据 值 进行升序排列(在原数组中重新排列元素),保持键值关联
 
  arsort(array subject[,integer sort_flag])//根据 值 进行降序排列(在原数组中重新排列元素),保持键值关联
 
  当asort() arsort()用于非关联数组时,元素按排序后的次序重新排列,但是访问元素的索引不改变
 
  integer ksort(ayyay subject [,integer sort_flag])//根据 键或索引 进行升序排列
 
  integer krsort(ayyay subject [,integer sort_flag])//根据 键或索引 进行降序排列
 
  usort(array subject, string compare_function)//根据用户定义排序,用户定义自己的排序规则函数,但函数必须符合
 
  uasort(array subject, string compare_function)//integer my_compare_function(mixed a, mixed b),a>b返回1,a uksort(array subject, string compare_function)//a等于b时返回0
 
  $numbers = array(16,3,2,171,5,24,6,19);
 
  sort($numbers);
 
  foreach($numbers as $n)
 
  echo $n." ";
 
  $numbers = array(16,3,2,171,5,24,6,19);
 
  rsort($numbers);
 
  foreach($numbers as $n)
 
  echo $n." ";
 
  $numbers = array(16,3,2,171,5,24,6,19);
 
  sort($numbers,SORT_STRING);
 
  foreach($numbers as $n)
 
  echo $n." ";
 
  $a = array("o"=>"kk","e"=>"zz","z"=>"hh","a"=>"rr");
 
  asort($a);
 
  foreach ($a as $keyname=>$keyvalue)
 
  echo $keyvalue;
 
  $a = array("o"=>"kk","e"=>"zz","z"=>"hh","a"=>"rr");
 
  ksort($a);
 
  foreach ($a as $keyname=>$keyvalue)
 
  echo $keyvalue;
 
  //基于长度比较两个字符串
 
  function cmp_length($a,$b)
 
  {
 
  if(strlen($a) < strlen($b))
 
  return -1;
 
  if(strlen($a) > strlen($b))
 
  return 1;
 
  return 0;
 
  }
 
  $animals = array("cow","ox","monkey","mimi");
 
  usort($animals,"cmp_length");
 
  foreach($animals as $an)
 
  echo $an;
 
  ---------------------输出结果----------------------------------------
 
  2 3 5 6 16 19 24 171 171 24 19 16 6 5 3 2 16 171 19 2 24 3 5 6 hhkkrrzzrrzzkkhhoxcowmimimonkey
 
  ---------------------------------------------------------------------
 
  array_merge($a,$b)//组合数组,个人认为是比较有趣的函数之一,从两个数组生成一个数组,具有相同 键 的值会被覆盖
 
  ////////////////////////////代码部分////////////////////////////////////////
 
  $a = array("name"=>"zhangsan",10,100);
 
  $b = array("name"=>"lisi",4,6,8);
 
  $c = array_merge($a,$b);
 
  var_dump($c);
 
  //////////////////////////////////////////////////////////////////////////
 
  ---------------------输出结果----------------------------------------
 
  array(6) { ["name"]=> string(4) "lisi" [0]=> int(10) [1]=> int(100) [2]=> int(4) [3]=> int(6) [4]=> int(8) }
 
  ---------------------------------------------------------------------
 
  array array_combine(array $a,array $b)//a数组的值为新数组的键,b数组的值为新数组的值,数组长度不同时,返回false
 
  ////////////////////////////代码部分////////////////////////////////////////
 
  $a = array("name","math","china");
 
  $b = array("zhangsan",4,6);
 
  $c = array_combine($a,$b);
 
  var_dump($c);
 
  //////////////////////////////////////////////////////////////////////////
 
  ---------------------输出结果----------------------------------------
 
  array(3) { ["name"]=> string(8) "zhangsan" ["math"]=> int(4) ["china"]=> int(6) }
 
  ---------------------------------------------------------------------

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读