數組(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 )
數組(1)