php網(wǎng)頁返回?cái)?shù)組

字號(hào):


    在看codeIgniter代碼是,發(fā)現(xiàn)了一個(gè)奇怪的php頁面,該頁面代碼也很簡(jiǎn)單,直接return一個(gè)數(shù)組。
    代碼如下:
    <?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è)頁面測(cè)試
    第一個(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.我再次測(cè)試返回的是字符串,又會(huì)有什么情況呢
    將第一個(gè)頁面代碼替換為:
    <?php
    return "網(wǎng)站制作學(xué)習(xí)網(wǎng)";
    第二個(gè)代碼則直接輸出對(duì)應(yīng)的變量。
    結(jié)果輸出"網(wǎng)站制作學(xué)習(xí)網(wǎng)";
    3.我們測(cè)試一下返回json格式是否可以,理論上對(duì)于php來說json就是一個(gè)字符串,應(yīng)該和字符串一樣。
    我們測(cè)試下
    第一個(gè)代碼:
    <?php
    return json_encode(array("site"=>"forasp.cn"))
    第二頁代碼
    <?php
    $a = include("forasp.php");//其他require什么的就不寫了,都一樣
    var_dump(json_decode($a))
    輸出結(jié)果
    object(stdClass)[1]
    public 'site' => string 'forasp.cn' (length=9)
    可以看出原來的require 和include雖然沒有返回值,當(dāng)我們引用的php有返回值時(shí),可以通過require,include傳遞給變量。