1. 程式人生 > >PHP_Day02_資料型別_陣列及其相關操作

PHP_Day02_資料型別_陣列及其相關操作

<?php
	/*
		在PHP新版本中陣列通過方括號來定義,在元素是多行的情況下,每行後面都要跟上逗號
		陣列元素通過鍵值對來儲存,如:key1 => val1, key2 => val2,
		當鍵名為整型的時候稱為索引陣列,當鍵名為字元型的時候稱為關聯陣列
		在儲存的時候,鍵名之間可能會發聲型別轉換,轉換之後會覆蓋原來的值,true,false,'1','01',NULL,7.9,9.1.....
		見名知意,儘量避免使用關鍵字
	*/
	
	// 定義方式,第一種
	$arr00 = [
		0 => 0,
		1 => 1,
		2 => 2,
	];
	var_dump($arr00[0]);
	echo '<hr>';
	// 第二種
	$arr10 = array(0 => 10, 1 => 20, 2 => 30);
	print_r($arr10);
	echo '<hr>';
	// 第三種
	$arr20 = array(10, 20, 30);
	print_r($arr20);
	echo '<hr>';
	
	
	var_dump($arr00);
	echo '<hr>';
	
	// 型別轉換
	$arr01 = [
	   	   01 => 'a',
		   "" => 'b',
		 NULL => 'c',	# 鍵名為NULL時會被解釋為空字串,也就是"",會覆蓋前面的""
		  7.9 => 'd',
		 true => 'e',
		false => 'f',
		  '1' => 'g',
		 '01' => 'h',
	];
	var_dump($arr01[0]);
	var_dump($arr01[1]);
	var_dump($arr01['1']);	# 字元型鍵名如果構成合法十進位制就會轉化為十進位制作為鍵名,會構成覆蓋
	var_dump($arr01['01']);	# 如果字元型鍵名不是合法十進位制就不會發生轉換
	echo '<hr>';
	var_dump($arr01[false]);
	var_dump($arr01[true]);
	echo '<hr>';
	var_dump($arr01[01]);	# true被解析成鍵名1,覆蓋
	var_dump($arr01[""]);	# 被NULL覆蓋
	var_dump($arr01[NULL]);
	var_dump($arr01[7.9]);
	var_dump($arr01[7]);	# 當鍵名為浮點數的時候會省略掉小數部分來儲存,但通過原來的鍵名還能訪問到
	var_dump($arr01[true]);
	var_dump($arr01[false]);
	echo '<hr>';
	
	$arr02 = [
		"Xust" => "Stu",
		 "Stu" => "Xust",
		   100 => -100,
		  -100 => 100,
	];
	var_dump($arr02);
	echo '<hr>';
	
	// 沒有鍵名的陣列,對於每個元素會按照鍵值為0,1,2,3,...的形式儲存
	$arr03 = [
		"Hello",
		"How are you",
		"I'm fine",
		"Thank you",
	];
	var_dump($arr03);
	
	// 定義二維陣列
	echo '<hr>';
	$arr04 = [
		'name' => 'Peter',
		'Age' => 24,
		'language' => [
			'html',
			'css',
			'javascript',
		],
	];
	print_r($arr04);
	echo '<hr>';
	var_dump($arr04);
	
	// 陣列的增刪改查
	// 增加和更新
	// 1.不指定鍵名則更新
	// 2.指定已存在的鍵名則更新
	// 3.鍵名不存在則新建
	
	echo '<hr>';
	$arr05 = [
		'name' => 'Peter',
		'Age' => 24,
		'language' => [
			'html',
			'css',
			'javascript',
		],
	];
	print_r($arr05);
	
	echo '<hr>';
	$arr05[] = 'Xi\'an';	# 不指定鍵名時按照最大整型鍵值遞增來新建
	$arr05[] = 'ShenZhen';
	print_r($arr05);
	
	echo '<hr>';			# 指定已存在的鍵值時就是更新
	$arr05['name'] = 'Jack';
	print_r($arr05);
	
	echo '<hr>';			# 指定不存在的鍵名時則新建
	$arr05['from'] = 'China';
	print_r($arr05);
	
	// 陣列或陣列元素的刪除 unset 函式,可以用於刪除整個陣列或者刪除單個元素
	echo '<hr>';
	$arr06 = [
		'name' => 'Peter',
		'Age' => 24,
		'language' => [
			'html',
			'css',
			'javascript',
		],
	];
	$arr06['from'] = 'China';
	print_r($arr06);
	
	// 刪除單個元素
	echo '<hr>';
	unset($arr06['from']);
	print_r($arr06);
	
	echo '<hr>';
	foreach($arr06 as $key => $value){	# 遍歷,將$arr06陣列中,對於每個元素,將值拷貝到value中,鍵拷貝到key中
		unset($arr06[$key]);			# 將陣列中每個元素的值清空,並不是刪除陣列,只是清空值
	}
	print_r($arr06);
	
	echo '<hr>';
	$arr06[] = 10;
	$arr06[] = 20;
	$arr06[] = 30;
	$arr06[] = 40;
	$arr06[] = 50;
	print_r($arr06);
	
	// 陣列元素重建索引,主要針對索引陣列
	// 得到一個按鍵值由小到大重新排序的陣列
	echo '<hr>';
	unset($arr06[3]);
	$newArr = array_values($arr06);
	print_r($newArr);
	
	// 陣列遍歷,foreach準確來說是用來遍歷關聯陣列的
	echo '<hr>';
	foreach($arr06 as $key => $value){
		print_r($arr06[$key]);
		var_dump($arr06[$key]);
		echo '<hr>';
	}
?>