PHP學習3——陣列

烏雲上發表於2018-08-05

 主要內容:

  1. 簡介
  2. 常用的方法
  3. 迴圈遍歷陣列
  4. PHP預定義陣列
  5. 陣列的處理函式

陣列

PHP由於是弱型別的語言,他的變數型別是可以自由變換的,他的陣列很自由,長度是可以動態增加的。

他的索引預設為數字0開始,另外有一個很強大的地方就是,他的陣列可以和字典一樣,通過(key-value)鍵值對模式來儲存(厲害哦)

<?php
	//宣告陣列,並初始化
	$xiaoli=array("小李",25,"男","google公司","xiaoli@php.com");
	//輸出陣列
	print_r($xiaoli);
	
	echo "<br/>";
	$xiaobai[2]="小白";
	$xiaobai[]=20;
	$xiaobai[]="女";	
	$xiaobai[]="baidu公司";	
	$xiaobai[]="xiaobai@php.com";	
	//輸出陣列
	print_r($xiaobai);
	
	echo "<br/>";
	$bai["姓名"]="小白";
	$bai[`年齡`]=20;
	$bai[`性別`]="女";	
	$bai[`公司`]="baidu公司";	
	$bai[`郵箱`]="xiaobai@php.com";	
	//輸出陣列
	print_r($bai);
?>

輸出

Array ( [0] => 小李 [1] => 25 [2] => 男 [3] => google公司 [4] => xiaoli@php.com ) 
Array ( [2] => 小白 [3] => 20 [4] => 女 [5] => baidu公司 [6] => xiaobai@php.com ) 
Array ( [姓名] => 小白 [年齡] => 20 [性別] => 女 [公司] => baidu公司 [郵箱] => xiaobai@php.com )

使用數字作為key的叫做“索引陣列”,使用其他作為key的叫做“關聯陣列”,可以使用array在初始的時候就是預設使用索引,也可以制定為關聯陣列。

<?php
	//宣告 索引陣列,並初始化
	$xiaoli=array("小李",25,"男","google公司","xiaoli@php.com");
	//輸出陣列
	print_r($xiaoli);
     echo "<br/>"; 
	//宣告 關聯陣列,並初始化
	$xiaoli=array("姓名"=>"小李","年齡"=>25,"性別"=>"男","google公司","xiaoli@php.com");
	//輸出陣列
	print_r($xiaoli);

?>

輸出

Array ( [0] => 小李 [1] => 25 [2] => 男 [3] => google公司 [4] => xiaoli@php.com ) 
Array ( [姓名] => 小李 [年齡] => 25 [性別] => 男 [0] => google公司 [1] => xiaoli@php.com )

key也可以是變數,這樣更靈活

<?php
	//宣告 索引陣列,並初始化
	$xiaoli=array("小李",25,"男","google公司","xiaoli@php.com");
	//輸出陣列
	print_r($xiaoli);
	
	echo "<br/>";
	//宣告 關聯陣列,並初始化
	$xiaoli=array("姓名"=>"小李","年齡"=>25,"性別"=>"男","google公司","xiaoli@php.com");
	//輸出陣列
	print_r($xiaoli);
	
	$a="姓名";
	echo "<br/>";
	echo $xiaoli[$a];
	$a="年齡";
	echo "<br/>";
	echo $xiaoli[$a];

?>

輸出

Array ( [0] => 小李 [1] => 25 [2] => 男 [3] => google公司 [4] => xiaoli@php.com ) 
Array ( [姓名] => 小李 [年齡] => 25 [性別] => 男 [0] => google公司 [1] => xiaoli@php.com ) 
小李
25

常用的方法

each($arr)返回陣列中當前指標的鍵值對

print_r($arr)輸出陣列所有元素

var_dump($arr)輸出陣列的所有元素以及型別資訊

list($a,$b)=array(“小李”,25,”男”,”google公司”)這裡一次性給多個變數賦值,$a=”小李”,$b=25;

 

迴圈遍歷陣列

這裡有3中方法來遍歷數字

  • for($i=0;$i<count($arr);$i++){}
  • foreach($arr as $x=>$y){}
  • while($v=each($arr)){}

foreach.php

<?php

	//宣告 關聯陣列,並初始化
	$xiaoli=array("姓名"=>"小李","年齡"=>25,"性別"=>"男","google公司","xiaoli@php.com");
	foreach($xiaoli as $a=>$b){
		//each($xiaoli);
		echo "陣列中 $a 元素是 $b <br/>";
	}

?>

輸出

陣列中 姓名 元素是 小李 
陣列中 年齡 元素是 25 
陣列中 性別 元素是 男 
陣列中 0 元素是 google公司 
陣列中 1 元素是 xiaoli@php.com 

貌似for迴圈只能遍歷純索引陣列

for.php

<?php

	//宣告 關聯陣列,並初始化
	$xiaoli=array("姓名"=>"小李","年齡"=>25,"性別"=>"男","google公司","xiaoli@php.com");
	for($i=0;$i<count($xiaoli);$i++){
		//each($xiaoli);
		echo "陣列中 ".$i."元素是 ".$xiaoli[$i]." <br/>";
	}

?>

輸出

陣列中 0元素是 google公司 
陣列中 1元素是 xiaoli@php.com 

Notice: Undefined offset: 2 in C:xampphtdocsdemo2.php on line 7
陣列中 2元素是 

Notice: Undefined offset: 3 in C:xampphtdocsdemo2.php on line 7
陣列中 3元素是 

Notice: Undefined offset: 4 in C:xampphtdocsdemo2.php on line 7
陣列中 4元素是 

while_each.php

<?php

	//宣告 關聯陣列,並初始化
	$xiaoli=array("姓名"=>"小李","年齡"=>25,"性別"=>"男","google公司","xiaoli@php.com");
	while($v=each($xiaoli)){
		echo "陣列中 ".$v["key"]."元素是 ".$v["value"]." <br/>";
	}

?>

輸出

陣列中 姓名元素是 小李 
陣列中 年齡元素是 25 
陣列中 性別元素是 男 
陣列中 0元素是 google公司 
陣列中 1元素是 xiaoli@php.com 

PHP預定義陣列

  • $GLOBALS(包含了全部變數的全域性組合陣列)
  • $_SERVER(頭資訊,路徑,指令碼位置等資訊的陣列)
  • $_POST
  • $_GET
  • $_COOKIE
  • $_SESSION
  • $_REQUEST(預設情況下包含了$_POST,$_GET,$_COOKIE的陣列)

陣列的處理函式

array_sum($arr)返回陣列中所有value的值的和,字串當做0

in_array($key,$arr)如果$key在$arr陣列中,返回true,否則返回false

array_count_values($arr)用來統計所有值出現的次數

array_sum.php

<?php

	//宣告 關聯陣列,並初始化
	$xiaoli=array("姓名"=>"小李","年齡"=>25,"性別"=>"男","google公司","xiaoli@php.com");
	$a=array_sum($xiaoli);
	echo $a;

?>

輸出

=>25

in_array.php

<?php

	//宣告 關聯陣列,並初始化
	$xiaoli=array("姓名"=>"小李","年齡"=>25,"性別"=>"男","google公司","xiaoli@php.com");
	findkey("小李",$xiaoli);
	echo "<br/>";
	findkey("小小",$xiaoli);
	
	//在陣列xiaoli中找key
	function findkey($key,$xiaoli){
		if(in_array($key,$xiaoli)){
			echo "fund ".$key;
		}else{
			echo "not fund ".$key;
		}
	}

	
?>

輸出

fund 小李
not fund 小小

array_count_values.php

<?php

	//宣告 關聯陣列,並初始化
	$xiaoli=array("姓名"=>"小李","姓名1"=>"小李","姓名2"=>"小李","姓名3"=>"小李",
	"年齡"=>25,25,25,25,25,666,1,666,666,
	"性別"=>"男","google公司","xiaoli@php.com");
	print_r(array_count_values($xiaoli));

	
?>

輸出

Array ( [小李] => 4 [25] => 5 [666] => 3 [1] => 1 [男] => 1 [google公司] => 1 [xiaoli@php.com] => 1 )

 

ok陣列的學習就到這裡。

 


相關文章