1. 程式人生 > >數組(1)

數組(1)

3層 復合 個數 不同的 min pre 變量名 多個 blog

一、數組的定義方式:

  數組是一種存儲數據的方式,可以存儲多個值,每個值用不同的鍵來區分。

  鍵->箱子上的編號

  值->箱子裏面的內容

  

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 )

數組(1)