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

字號:


    在看codeIgniter代碼是,發(fā)現(xiàn)了一個(gè)奇怪的php頁面,該頁面代碼也很簡單,直接return一個(gè)數(shù)組。
    php網(wǎng)頁代碼如下:
    <?php
    return array(
    ...
    );
    //code end
    該頁面直接返回了一個(gè)數(shù)組。
    寫了幾年的php,第一次見到這樣的應(yīng)用,那么我們該如何獲取php網(wǎng)頁返回?cái)?shù)組呢?
    第一想到了require和include。
    看require和include在php手冊中的解釋中,兩個(gè)引用文件的語言結(jié)構(gòu)均沒有返回值,區(qū)別是include
    () 產(chǎn)生一個(gè)警告而 require() 則導(dǎo)致一個(gè)致命錯(cuò)誤。
    1.那么我們在引用一個(gè)有返回?cái)?shù)組的php頁面時(shí),會怎么樣呢?我用了兩個(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ù),不會執(zhí)行,需要分開執(zhí)行
    發(fā)現(xiàn)果真能拿到php文件返回來的數(shù)組。
    2.我再次測試返回的是字符串,又會有什么情況呢
    將第一個(gè)頁面代碼替換為:
    <?php
    return "網(wǎng)站制作學(xué)習(xí)網(wǎng)";
    第二個(gè)代碼則直接輸出對應(yīng)的變量。
    結(jié)果輸出"網(wǎng)站制作學(xué)習(xí)網(wǎng)";
    3.我們測試一下返回json格式是否可以,理論上對于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傳遞給變量。