## 新建Teacher控制器
為了更好的將各個功能模塊區分開,也為了更好的進行分工,我們再新建一個控制器Teacher,位于app\index\controller下,并在控制器Teacher中新建一個index方法,用于顯示數據。
代碼如下:
~~~
<?php
namespace app\index\controller;
use think\Db; // 數據庫操作類
class Teacher
{
public function index()
{
return 'hello Teacher';
}
}
~~~
在寫代碼以前,我們想的是測試。
在寫完代碼以后,我們想的還是測試。
之所以返回了hello teacher,而沒有去直接寫具體的代碼實現,目的也是為測試。在初步階段,我們需要每寫一點就測一點,保證自己的每行代碼都和自己的預期結果一致。
測試結果如下圖所示:

~~~
git checkout -f step3.2.3.1
~~~
執行上述命令后,上述示例代碼信息如下:

### 獲取數據并輸出
“獲取教師表中所有數據”功能的實現代碼如下:
~~~
<?php
namespace app\index\controller;
use think\Db; // 數據庫操作類
/**
* 教師管理
*/
class Teacher
{
public function index()
{
// 獲取教師表中的所有數據
$teachers = Db::name('teacher')->select();
// 查看獲取的數據
var_dump($teachers);
}
}
~~~
**良好的注釋習慣會使我們的編碼事半功倍。**
測試結果如下圖所示:

~~~
git checkout -f step3.2.3.2
~~~
執行上述命令后,上述示例代碼信息如下:

**知識點**:
<blockquote class="info">
<ol>
<li>var_dump()這個函數既可以查看一般變量的值,又可以查看數組的值,還可以查看對象的值。在前期的學習過程中,我們將會大量的與它接觸。</li>
<li>你查看的結果,可能和我這里的形式表現不一致,如果是這樣的話,請參考 http://www.mengyunzhi.com/share/php/107-xdebug.html 進行xdebug的安裝。</li>
</ol></blockquote>
### 解釋一下輸出的結果:
~~~
// var_dump()語句的位置是xxx/Teacher.php的第15行。
D:\xampp\htdocs\thinkphp5\application\index\controller\Teacher.php:15:
// 變量類型是個array,即數組,“array (size=2)”表示這個數組中有兩個子項。
array (size=2)
// 鍵值為0的值是一個數組:
0 =>
// 變量類型是一個數組,這個數組中有7個子項
array (size=7)
'id' => int 1 // 鍵值為id的值為1,是int類型
'name' => string '張三' (length=6) // 鍵值為name的值為 張三,是string類型,長度為6
'sex' => int 0
'username' => string 'zhangsan' (length=8)
'email' => string 'zhangsan@mail.com' (length=17)
'create_date' => int 123123
'update_date' => int 123213
1 =>
array (size=7)
'id' => int 2
'name' => string '李四' (length=6)
'sex' => int 0
'username' => string 'lisi' (length=4)
'email' => string 'lisi@yunzhi.club' (length=16)
'create_date' => int 123213
'update_date' => int 1232
~~~
我們非常高興的看到,var_dump()后的數據既有了變量類型,又有了變量值,將數據的結構非常直觀的展示在了我們面前。當然了,如果從數據結構的角度上來,上述結構是一個典型的樹狀結構。
### 樹狀數組結構的輸出

當我們想輸出teachers中的0號元素時:
~~~
public function index()
{
// 獲取教師表中的所有數據
$teachers = DB::name('teacher')->select();
// 查看獲取的數據
var_dump($teachers[0]);
}
~~~
當我們想輸出teachers中0號元素的name值時:
~~~
public function index()
{
// 獲取教師表中的所有數據
$teachers = DB::name('teacher')->select();
// 查看獲取的數據
var_dump($teachers[0]['name']);
}
~~~
當然了,如果變量的類型是字符串,那么我們還可以使用echo語句:
~~~
public function index()
{
// 獲取教師表中的所有數據
$teachers = DB::name('teacher')->select();
// 用下面的語句,也可以直接返回給用戶
echo $teachers[0]['name'];
// 查看獲取的數據
return $teachers[0]['name'];
}
~~~
測試結果如下圖所示:

~~~
git checkout step3.2.3.3
~~~
執行上述命令后,上述示例代碼信息如下:

是的,數組就是這樣的,一個典型的樹狀的數組結構。如果有一個N級數組,我們的輸出方式可以是$teachers[0][0][0][1][1][1][1][0][0][0][1]........,只要有足夠多的中括號,我們就可以輸出到最后一項。
在多維數組中,只有葉子結點值的類型是非數組的,父結點的變量類型都是數組。
- 序言
- 第一章 準備知識
- 第一節:XAMPP
- 第二節:NAVICAT
- 第三節:GIT
- 第二章 HelloWorld
- 第一節:下載THINPHP5.0
- 第二節:啟動xampp
- 第三節:hello thinkphp
- 第四節:Hello world
- 第五節:MCA
- 第六節:單引號與雙引號
- 第三章 教師管理
- 第一節:新建數據庫
- 第二節:CURD之R 讀數據
- 3.2.1 時序圖
- 3.2.2 連接數據庫
- 3.2.3 直接讀取數據
- 3.2.4 間接讀取數據
- 3.2.5 使用V層顯示數據
- 3.2.6 引入bootstrap
- 3.2.7 加入bootstrap樣式
- 第三節:CURD之 C 增加數據
- 3.3.1 插入數據
- 3.3.2 表單傳值
- 3.3.3 存儲表單數據
- 3.3.4 自動時間戳
- 3.3.5 增加驗證
- 第四節:CURD之 D 刪除數據
- 3.4.1 什么是關鍵字
- 3.4.2 刪除數據
- 3.4.3 定制刪除鏈接
- 3.4.4 完善刪除
- 第五節:CURD之 U 更新數據
- 3.5.1 讀取數據
- 3.5.2 展示數據
- 3.5.3 修改數據
- 3.5.4 傳遞數據
- 3.5.5 接收數據
- 3.5.6 更新數據 方法一
- 3.5.7 更新數據 方法二
- 第六節:銜接各個action & 重構代碼
- 3.6.1 index action
- 3.6.2 add action
- 3.6.3 insert action
- 3.6.4 delete action
- 3.6.5 edit action
- 3.6.6 update action
- 第七節:分頁
- 3.7.1 調用內置分頁
- 3.7.2 select與paginate(選學)
- 3.7.3 分頁原理(選學)
- 3.7.4 調用page(選學)
- 第八節:模糊查詢
- 3.8.1 增加查詢
- 3.8.2 完善查詢
- 第四章 登錄與注銷
- 第一節:cookie 與 session
- 第二節:靜態方法
- 第三節:規劃URL跳轉
- 第四節:登錄
- 4.4.1 登錄流程
- 4.4.2 index action
- 4.4.3 login action
- 4.4.4 引入M層
- 4.4.5 異常Exception
- 第五節:注銷
- 第六節:驗證
- 4.6.1 action增加驗證
- 4.6.2 使用構造函數驗證
- 4.6.3 使用繼承驗證
- 第五章 E-R圖與數據字典
- 第一節:第一張E-R圖
- 第二節:實體間的關系
- 第三節:開發規范
- 第六章 班級管理
- 第一節:建立數據表
- 第二節:數據列表index
- 第三節:增加數據add
- 第四節:編輯數據edit
- 第五節:刪除數據delete
- 第七章 學生管理
- 第一節:建立數據表
- 第二節:數據列表
- 7.2.1 顯示性別
- 7.2.2 顯示創建時間
- 7.2.3 顯示班級名稱
- 7.2.4 顯示輔導員姓名
- 第三節:編輯數據
- 第四節:魔法函數
- 第五節:源碼分析
- 第八章 課程管理
- 第一節:建立數據表
- 第二節:新增課程
- 第三節:編輯課程
- 8.3.1 edit
- 8.3.2 update
- 第九章 代碼重構
- 第一節:add 與 edit
- 第二節:insert 與 update
- 第三節:模板繼承
- 9.3.1 index.html
- 9.3.2 edit.html
- 9.3.3 小結
- 第十章 UML圖
- 第一節:E-R圖回顧
- 第二節:UML圖
- 第十一章 菜單與路由
- 第一節:添加菜單
- 第二節:虛擬主機
- 第三節:定制路由
- 第十二章 開發調試
- 第一節:開啟trace
- 第二節:查看日志
- 第十三章:總結