一、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():将变量转换成数组,生成的数组是关联数组,而且数组的键值和内容相同
 
 
 
 
 
 
 
 

php数组基础的更多相关文章

  1. Java 数组基础

    数组 数组(Array):相同类型数据的集合. 定义数组 方式1(推荐,更能表明数组类型) type[] 变量名 = new type[数组中元素的个数]; 比如: int[] a = new int ...

  2. Java 数组基础,java.util.Arrays

    定义数组 方式1(推荐,更能表明数组类型) 方式2(同C语言) 方式3定义时直接初始化 数组运用基础 数组长度 equals() 数组元素不为基本数据类型时 二维数组 二维数组基础 变长的二维数组 j ...

  3. PHP 数组基础知识

    php 数组基础知识function abc($a,$b,$c = 0){ echo $a,$b,$c;}abc(1,3); //调用方法 ////可变参数function def(){ $arr = ...

  4. 1.2 NumPy数组基础

    目录 第一章 numpy入门 1.2 numpy数组基础 1.2.1 数组的属性 1.2.2 数组的索引:获取单个元素 1.2.3 数组切片:获取子数组 1.2.4 数组的变形 1.2.5 数组的拼接 ...

  5. js数组基础整理

    首页: 主要整理了一下数组中常用的一些基础知识,代码都是自己手敲,有不对的地方希望能指出,目前只有4篇,后续会不断的增加这一板块. 由于少于100字不能发所以把一些最基本的创建数组也写上. // 创建 ...

  6. JavaScript数组基础编程题归纳

    之前的随笔"JavaScript中数组类型的属性和方法"中有介绍很多数组类型的方法,但都是一些理论.最近在练习在线编程题,发现自己还是习惯于用常规的循环来答题,对于数组的方法的使用 ...

  7. java数组基础

    */ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...

  8. C# 数组基础

    一.数组的基础知识 1.数组有什么用? 如果需要同一个类型的多个对象,就可以使用数组.数组是一种数组结构,它可以包含同一个类型的多个元素. 2.数组的初始化方式 第一种:先声明后赋值 ]; array ...

  9. java数组基础知识

    数组的定义:int[] array=new array[n];int array[]={, , , ,};定义了数组,JVM就会给其一个空间,数组是应用类型的数据类型,其存储方式是随机存储. 数组的遍 ...

  10. Array数组基础

    数组的定义 数组(array)是按次序排列的一组值,单个值称为元素,它们的位置都有编号(从0开始).整个数组用方括号表示. var arr = ['a', 'b', 'c']; 上面代码中的a.b.c ...

随机推荐

  1. STL之deque、queue、stack、list

    首先deque和vector是很像的 但是de代表double双向的队列那么deque可以从首部添加(删除)元素也可以从尾部添加(删除)元素. .push_back(elem) .push_front ...

  2. ural 1333 化平面为点计算覆盖率

    题目链接:http://acm.timus.ru/problem.aspx?space=1&num=1333 #include<cstdio> #include<cstrin ...

  3. winform 窗体关闭按钮禁用、不显示最大化、最小化、关闭按钮 分类: WinForm 2014-12-22 16:09 82人阅读 评论(0) 收藏

    关闭按钮禁用: (1) FormClosing事件 private void Main_FormClosing(object sender, FormClosingEventArgs e) {     ...

  4. tableview: 实现tableview 的 section header 跟随tableview滑动

    方法一:(只有一个headerView)一段 如果你的tableview恰好只有一个headerView,实现这种效果就好办了.把要设置的headerView设置成tableView的header而不 ...

  5. 免费WiFi,仅仅为好久没联系的你们

    昨日,认识五年的朋友搬来与我一起住了,说不上来,没有激动,仅仅是突然感觉生活又多了一点生机.兴致上来,晚上立马联系了已经近四个月没有联系的好友,才知道他们的生活也因这几个月发生了翻天覆地的变化.究竟什 ...

  6. docker 镜像中包含数据库环境和运行环境

    需求: 一个镜像中要包含数据库环境和运行环境 Apache 环境 + mariadb 已经在拉取了Apache的运行环境 - 拉取代码 git https://github.com/timhaak/d ...

  7. Android 颜色渲染(十) ComposeShader组合渲染

    版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] Android 颜色处理(十) ComposeShader组合渲染 public ComposeShader(Shader sh ...

  8. Enable Access Logs in JBoss 7 and tomcat--转

    JBoss 7 is slightly different than earlier version JBoss 5 or 6. The procedure to enable access logs ...

  9. 为什么我选择使用 Blocks(块)

    扯淡:到了新公司接手新框架之后,发现大量的使用Blocks,之前很多时候都是使用代理,突然面对这个陌生的语法,特地科普总结了一番. 什么是Blocks 一句话概括就是,带有局部变量的匿名函数(即不带名 ...

  10. [iOS 开发]UITableView第一行显示不完全

    造成这个问题的原因可能有两个: 1. UITableView的contentOffset属性的改变: 2. MJRefresh调用两次headerEndRefreshing会造成刷新后UITableV ...