• 数组(1)


    一、数组的定义方式:

      数组是一种存储数据的方式,可以存储多个值,每个值用不同的键来区分。

      键->箱子上的编号

      值->箱子里面的内容

      

    1 $arr = array('name'=>'wangwu','age'=>'10');//定义一个数组
    2 print_r($arr);
    3 echo '<br/>';
    4 echo $arr['name'];//访问数组键为name所对应的值

    二、数组的类型

      数组的分类:索引数组;关联数组;二维数组;多维数组

      1、索引数组--键不必有特殊意义,纯数字从0递增的数组,这种叫“索引数组”。

        

    1 $arr = array(0=>'a',1=>'b',2=>'c',3=>'d');
    2 print_r($arr);

      2、关联数组

        字符串做键,一般能体现该单元的内容。  

    1 $arr = array('name'=>'wangwu','age'=>'10','hobby'='basketball');//关联数组
    2 print_r($arr);
    

      3、二维数组、多维数组

    $arr2 = array('name'=>'lisi','age'=>25,'hobby'=>array('football','pingpang'));

      三、数组键规则

      1、键可以不分配,系统会0,1,2、、、递增分配

        $arr = array('a','b','c');

        print_r($arr);

      2、如果有的键分配,有的不分配,会从之前的键中,取最大的键开始递增

        

    1 $arr1 = array('name'=>'lisi','age'=>'23','running');
    2 print_r($arr1);

    运行结果:

      Array ( [name] => lisi [age] => 23 [0] => running )

      

    1 $arr2= array(0=>'a',1=>'b','c',5=>'d','e','f');
    2 print_r($arr2);

    运行结果:

      Array ( [0] => a [1] => b [2] => c [5] => d [6] => e [7] => f )

    1 $arr2= array(0=>'a',1=>'b','c',5=>'d','e','f');
    2 print_r($arr2);

    运行结果:

      Array ( [0] => a [1] => b [2] => c [5] => d [6] => e [7] => f )

    3、如果键分配重复了怎么办

      对于数组它的键是不能重复的

      如果键重复,后面的同名键会覆盖前面的

      

    1 $arr3 = array('a','b','c',2=>'d',2=>'e');
    2 print_r($arr3);

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

    注意:

      数组的键只有两种类型,整型和字符串

      键为浮点型,字符串型的整数,和null

      键为浮点数->向下取整

      如果字符串恰好理解为一个整数,也转为整数

      null按空字符串来理解

        

    1 $arr = array(2=>'今',2.5=>'天',2.5=>'是','2'=>'周',null=>'末');
    2 
    3 print_r($arr);

    运行效果:

      Array ( [2] => 周 [] => 末 )

    在实际开发中:

      不会遇到这些比较麻烦的数组

      一般是关联数组和自动生成的索引数组

    四、操作数组单元

      数组是一个复合数据,里面放了很多数据  print_r()将里面所有的数据都打印了出来  需要对数组的具体单元进行操作  数组单元的 增,删,改,查  

    1.单独取出某一个单元的值,用键来取 $数组名[键]

      

    1 $arr = array('a','b','c');
    2 echo $arr[1];

    运行结果:

      b

      2、取出二维数组的值

        数组的层级顶多到3层,否则无法直观的理解

        

    1 $arr2 = array('name'=>'lisi','age'=>23,'hobby'=>array('basketball','football','pingpang'));
    2 echo $arr2['hobby'][0];

    basketball

    3、更改一个数组单元的值

      

    1 $arr2 = array('name'=>'lisi','age'=>23,'hobby'=>array('basketball','football','pingpang'));
    2 $arr2['hobby'][0] = 'swiming';
    3 print_r($arr2);

    运行结果:

      Array ( [name] => lisi [age] => 23 [hobby] => Array ( [0] => swiming [1] => football [2] => pingpang ) )

    4、增加一个数组单元

      

    1 $arr2 = array('name'=>'lisi','age'=>23,'hobby'=>array('basketball','football','pingpang'));
    2 $arr2['area'] = 'beijing';
    3 print_r($arr2);

    运行结果:

      Array ( [name] => lisi [age] => 23 [hobby] => Array ( [0] => basketball [1] => football [2] => pingpang ) [area] => beijing )

    5、删除数组单元

      

    1 $arr2 = array('name'=>'lisi','age'=>23,'hobby'=>array('basketball','football','pingpang'));
    2 unset($arr2['hobby']);
    3 print_r($arr2);

    运行结果:

      Array ( [name] => lisi [age] => 23 )

     五、遍历数组

      1、取出数组的每个单元

      

    1 $arr = array('a','b','c','d');
    2 echo $arr[0].'<br/>';
    3 echo $arr[1].'<br/>';
    4 echo $arr[2].'<br/>';
    5 echo $arr[3].'<br/>';

    运行结果:

      a
      b
      c
      d

    1 $arr = array('a','b','c','d');
    2 for($i=0;$i<count($arr);$i++){
    3     echo $arr{$i},'<br/>';
    4 }

    2、关联数组如何取出每个数组单元?

      它的键是字符串,没有任何规律,foreach是专门用来循环数组的,

      速度非常快,foreach里面的键值的变量名($k,$v)为任意合法的变量名

      

    1 $arr = array('name'=>'zhangsan','age'=>24,'area'=>'beijing');
    2 foreach($arr as $k=>$v){
    3     echo $k,':',$v,'<br/>';
    4 }

    name:zhangsan
    age:24
    area:beijing

    3、只循环值

      

    1 $arr = array('name'=>'zhangsan','age'=>24,'area'=>'beijing');
    2 foreach($arr as $v){
    3     echo $v,'<br/>';
    4 }

    运行结果:

      zhangsan
      24
      beijing

    4.array_keys — 返回数组中所有的键名 foreach 没有办法单循环取出健

      

    1 $arr = array('name'=>'zhangsan','age'=>24,'area'=>'beijing');
    2 
    3 print_r(array_keys($arr));

    运行结果:

      Array ( [0] => name [1] => age [2] => area )

    5.把下面这个的数组的每个单元值变成原来的 2 倍

      

    1 $stu = array('san'=>3,'lisi'=>4,'wang'=>5,'zhao'=>5);
    2 foreach($stu as $k=>$v){
    3     $stu[$k] = $v*2;
    4 }
    5 print_r($stu);

    Array ( [san] => 6 [lisi] => 8 [wang] => 10 [zhao] => 10 )

  • 相关阅读:
    一个简单的批量更新oracle 数据库中 最近的服务商名称的数据
    sql 分组后显示每组的前几条记录
    基于server broker 的数据实时更新
    Oracle中的三种Join 方式
    weblogic内存调整说明
    TongWeb
    国产数据库助力民航核心交易系统
    weblogic的集群与配置
    项目管理软考
    浮躁的过去,开启的项目管理之路(四)
  • 原文地址:https://www.cnblogs.com/flytime/p/6917066.html
Copyright © 2020-2023  润新知