zoukankan      html  css  js  c++  java
  • php数组基础


    一、php数组的声明
         1、数组中可以有任意类型的数据
         2、长度可以变长
         3、数组的分类:
              a、索引数组:数组是以从0开始的帧数作为索引值
                   声明:$arr = array(1,2);$arr[0] = 1;
                   计算数组长度:count($arr);
              b、关联数组:数组是以字符串作为索引值
                   声明:$arr["name"] = "gh";
                         $arr = array("name"=>"zs","age"=>2);
     
              索引数组和关联数组的整合使用:
              $arr = array("name"=>"zs",2,"age"=>3,4);
              如果要去到name就是$arr["name"],如果想取到2,就是$arr[0],如果想取到4,就是arr[1],关联数组的下标不会影响到索引数组的排序
     
              多维数组:
                   $arr1 = array(1,2,3,4);
                   $arr2 = array("abc","def");
     
                   $arr = array($arr1,$arr2);
                        
         
    二、php数组的遍历
         1、for循环:for($i=0;$<count($arr);$i++){}尽量不要用,因为索引数组和关联数组可能混合使用
         2、foreach($arr as $value){}或者foreach($arr as $key=>$value){}其中$key代表数组的下标,$value代表数组的值
     
         遍历二维数组:
         $arr = array(array(1,2,3),array("a","b"));
        foreach($arr as $key=>$value){
            foreach($value as $k=>$v){
                echo "$arr[".$key."][".$k."] =".$v."&nbsp;&nbsp;";
            }
            echo "<br/>遍历一次换行<br/>";
        }
     
         3、while()
              $arr = array("hello"=>1,2,3);
              each()方法:此方法返回一个数组,形如Array ( [1] => 1 [value] => 1 [0] => hello [key] => hello ),0和key代表数组的下表,1和value代表下表对应的值,每次执行后向前执行一步,直至数组中不在有数据了
              print_r(each($arr));
     
              while($a = each($arr)){
                   echo $a["key"]."====>".$a["value"]
              }
     
         4、list()将数组中的值转换成变量,只能识别到索引数组
         $arr = array(1,2,3);  
         list($a,$b,$c)=$arr;
         echo $a."-----".$b."-----".$c;
     
         while(list($key,$value)=each($arr)){}
    三、php数组的相关处理函数
         
         current(array arr) :返回当前指针对应的内容的值 
         key(array arr):返回当前指针对应的索引的值
         这两个函数都不能使指针进行移动
         $arr = array("hello"=>"one","two","three",1,2,3);
         $a = current($arr);返回的是当前指针对应的值,输出one
     
         $b = key($arr);返回当前指针位置对应的索引的值,输出hello
     
         next(array arr):使数组的指针向下移动一个
         end(array arr):使数组的指针移动到最后
         prev(array arr):使数组的指针向上移动一个
         reset(array arr):使数组的指针重新移动到最开始的位置
     
         count(array arr):计算数组的长度
         sizeof(array arr):计算数组长度
     
         array_change_key_case(array arr,形态常数):常熟形态:CASE_UPPER,CASE_LOWER
         $arr = array("heLLo"=>"one","WWW"=>"two","baidu"=>"three");
         $newarr = array_change_key_case($arr,CASE_UPPER);
         print_r($newarr);
         
         输出的结果为:Array ( [HELLO] => one [WWW] => two [BAIDU] => three )
     
         array_chunk(目标数组,分解的索引个数[,boolean]):把一个数组分解成还有多个小数据的数组,最后一个boolean,如果为true则表示保留之前数组的索引名字,否则全都是索引数组的形式,此值默认为false
     
         例子:$arr = array("hello"=>"one","two","three",1,2,3,"www");
         $newarr = array_chunk($arr,3,true);
         输出结果为:Array ( [0] => Array ( [hello] => one [0] => two [1] => three ) [1] => Array ( [2] => 1 [3] => 2 [4] => 3 ) [2] => Array ( [5] => www ) )
     
         最后一个参数是false时:
         Array ( [0] => Array ( [0] => one [1] => two [2] => three ) [1] => Array ( [0] => 1 [1] => 2 [2] => 3 ) [2] => Array ( [0] => www ) )
         可以看到第二中方式中的所有索引都是数字
     
         array_count_values(数组名称):用于计算数组中某个值出现的次数,返回的值仍然是个数组,原数组中的值作为数组的现在数组的下标,次数作为数组的长度
         如:
    $arr = array("hello"=>"one","two","three",1,2,3,"one","two",1,2,3"www");
         $newarr = array_count_values($arr);
         print_r($newarr);
         输出的结果为:
         Array ( [one] => 2 [two] => 2 [three] => 1 [1] => 2 [2] => 2 [3] => 2 [www] => 1 )
     
         array_fill(起始索引位置,区段大小,指定字元):用自定义数值填满数组中指定索引的区段
     
         array_filter(目标数组,定义的函数):过滤函数
         例子:
         $arr = array("hello"=>"one","two","three",1,2,3,-5,-7,"www"); 
         function func1($value){
              if($value > 0){
                   return true;
              }else return false;
         }
         $newarr = array_filter($arr,func1);//表示将arr数组中的每一个值作为参数传入到func1中去进行比较,如果返回true,则保留到newarr数组中去,否则舍弃(这个地方,所有字符串都被识别为0)。
     
         array_walk(array arr,function func1[,userdata]):对数组中的每个元素应用回调函数。如果成功则返回 TRUE,否则返回 FALSE。
         function func1($value,$key){
              echo "$key --> $value <br/>";
         }
         $arr = array("a"=>"cat","b"=>"dog");
         array_walk($arr,func1);
         输出的结果为:$a --> cat
                        $b --> dog
         还有稍微复杂点的例子,可以参考这里:http://www.w3school.com.cn/php/func_array_walk.asp
     
         array_map(回调函数,array arr):将回调函数作用到给定数组的单元上
     
         例子:function func1($value){
                   return $value*$value;
              }
              $newarr = array_map(func1,$arr);
              此时$newarr是一个数组,其中存放着$arr中的每个值得平方值
         
         array_flip(目标数组):交换数组中的键和值,如果同一个值出现了多次,则最后一个键名将作为它的值,所有其它的都丢失了。
         
         array_sum(目标数组):将数组中的所有值的和以整数或浮点数的结果返回。
         
         array_unique():去除数组中重复的值
         
         array_values():返回数组中所有的值,忽略原有的键名,重新使用索引数组
         
         array_keys(array arr):返回数组中的所有键
     
         in_array(要检索的元素,array arr[,boolean是否按数据类型进行检索]):查找某个值是否在数组中
     
         array_search(要查找的元素,array $arr):返回对应元素对应的键名,不存在返回false
     
         array_key_exists(下标值,array $arr):判断下标是否存在,返回boolean
     
         extract(array $arr):将数组转换成变量,只针对关联数组
     
         compact():将变量转换成数组,生成的数组是关联数组,而且数组的键值和内容相同
     
     
     
     
     
     
     
     
  • 相关阅读:
    Example of Formalising a Grammar for use with Lex & Yacc
    TCL脚本语言基础介绍
    linux环境下的c++编程
    如何利用FPGA进行时序分析设计
    可移植的配置visual studio工程第三方库
    [转]windows10 1703 鼠标右键打开命令提示符cmd
    重载和const形参的学习心得
    华为codecraft2018总结
    【转】C/C++使用心得:enum与int的相互转换
    C++学习笔记1-使用数组进行vector初始化
  • 原文地址:https://www.cnblogs.com/xyhy/p/3815843.html
Copyright © 2011-2022 走看看