在看codeIgniter代碼是,發(fā)現(xiàn)了一個奇怪的php頁面,該頁面代碼也很簡單,直接return一個數(shù)組。
代碼如下:
<?php
return array(
...
);
//code end
該頁面直接返回了一個數(shù)組。
寫了幾年的php,第一次見到這樣的應用,那么我們該如何獲取php網(wǎng)頁返回數(shù)組呢?
第一想到了require和include。
看require和include在php手冊中的解釋中,兩個引用文件的語言結構均沒有返回值,區(qū)別是include
() 產(chǎn)生一個警告而 require() 則導致一個致命錯誤。
1.那么我們在引用一個有返回數(shù)組的php頁面時,會怎么樣呢?我用了兩個頁面測試
第一個頁面forasp.php,代碼如下
<?php
return array("site"=>"abc","name"=>"def");
第二個頁面代碼
<?php
//$a = include("forasp.php");
$b = include_once("forasp.php");
//$c = require("forasp.php");
$d = require_once("forasp.php");
//echo $a["site"].$a["name"]."<br>";
echo $b["site"].$b["name"]."<br>";
//echo $c["site"].$c["name"]."<br>";
echo $d["site"].$d["name"]."<br>"
//注意這里的require_once 存在后和require包含文件重復,不會執(zhí)行,需要分開執(zhí)行
發(fā)現(xiàn)果真能拿到php文件返回來的數(shù)組。
2.我再次測試返回的是字符串,又會有什么情況呢
將第一個頁面代碼替換為:
<?php
return "網(wǎng)站制作學習網(wǎng)";
第二個代碼則直接輸出對應的變量。
結果輸出"網(wǎng)站制作學習網(wǎng)";
3.我們測試一下返回json格式是否可以,理論上對于php來說json就是一個字符串,應該和字符串一樣。
我們測試下
第一個代碼:
<?php
return json_encode(array("site"=>"forasp.cn"))
第二頁代碼
<?php
$a = include("forasp.php");//其他require什么的就不寫了,都一樣
var_dump(json_decode($a))
輸出結果
object(stdClass)[1]
public 'site' => string 'forasp.cn' (length=9)
可以看出原來的require 和include雖然沒有返回值,當我們引用的php有返回值時,可以通過require,include傳遞給變量。
更多信息請查看IT技術專欄