:::
2-4 關於陣列
一、陣列寫法
- 陣列是 Array,也就是一個變數可以存放許多值
- 底下這幾種方法都可以定義陣列,這三種都是一樣的意思
$stu = array('吳同學', '王同學', '林同學'); $stu = ['吳同學', '王同學', '林同學']; $stu[] = '吳同學'; $stu[] = '王同學'; $stu[] = '林同學';
二、一維陣列
- 上面是一維陣列,沒有指定索引的情況下,預設為從 0 開始的數字索引,亦即:
若$stu = array(0 => '吳同學', 1 => '王同學', 2 => '林同學'); $stu = [0 => '吳同學', 1 => '王同學', 2 => '林同學']; $stu[0] = '吳同學'; $stu[1] = '王同學'; $stu[2] = '林同學';echo $stu[2]會得到「林同學」三個字 - 可以自己指定索引:
若$stu = array(1 => '吳同學', 2 => '王同學', 4 => '林同學'); $stu = [1 => '吳同學', 2 => '王同學', 4 => '林同學']; $stu[1] = '吳同學'; $stu[2] = '王同學'; $stu[4] = '林同學';echo $stu[2]會得到「王同學」三個字 - 亦可用文字作為索引
若$stu = array('1號' => '吳同學', '2號' => '王同學', '4號' => '林同學'); $stu = ['1號' => '吳同學', '2號' => '王同學', '4號' => '林同學']; $stu['1號'] = '吳同學'; $stu['2號'] = '王同學'; $stu['4號'] = '林同學';echo $stu[2]會得到空值,echo $stu['2號']才會得到「王同學」三個字 - 也就是說,我們可以用一個變數,存一整班的學生資料。
三、二維陣列
- 若是要指定某個班的所有學生資料呢?底下兩個會有相同結果(
$stu的值為上面所設):$class_stu['甲班'] = $stu; $class_stu['甲班'] = [1 => '吳同學', 2 => '王同學', 4 => '林同學'];- 若
echo $class_stu['甲班']會印不出來,顯示 Array,因為底下有好幾個,不曉得要顯示誰(可用foreach一個一個印出來) - 若
echo $class_stu['甲班'][2]會印出「王同學」
- 若
- 若是要存一整個年級的學生資料呢?
$class_stu['甲班'] = [1 => '吳同學', 2 => '王同學', 4 => '林同學']; $class_stu['乙班'] = [1 => '張同學', '陳同學', '梁同學', '郭同學']; $class_stu['丙班'] = [1 => '施同學', '黃同學', '楊同學', '蔡同學'];- 若是座號當成索引,而且有連號,那麼只要指定第一個,後面會自動連號。
- 也就是說若
echo $class_stu['乙班'][2]會印出「陳同學」 - 也就是說若
echo $class_stu['丙班'][2]會印出「黃同學」
範例:
<?php
$stu = [1 => '吳同學', 2 => '王同學', 4 => '林同學'];
$class['甲班'] = $stu;
$class['乙班'] = [1 => '張同學', '陳同學', '梁同學', '郭同學'];
$class['丙班'] = [1 => '施同學', '黃同學', '楊同學', '蔡同學'];
$year['一年級'] = $class;
$year['二年級'] = $class;
foreach ($year as $year_name => $all_class) {
echo "<h2>{$year_name}</h2>";
foreach ($all_class as $class_name => $students) {
echo "<h3>{$class_name}</h3>";
foreach ($students as $num => $name) {
echo "{$name} ({$num})<br>";
}
}
}
// dd($year);
// echo $class_stu['丙班'][1];
// 顯示變數內容
function dd($array = [])
{
header("Content-Type: application/json; charset=utf-8");
die(json_encode($array, 256));
}
2-3 PHP的資料類型