PHP_Day02_資料型別_陣列及其相關操作
阿新 • • 發佈:2018-12-19
<?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>'; } ?>