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