在看codeIgniter代码是,发现了一个奇怪的php页面,该页面代码也很简单,直接return一个数组。
代码如下:
<?php
return array(
...
);
//code end
该页面直接返回了一个数组。
写了几年的php,第一次见到这样的应用,那么我们该如何获取php网页返回数组呢?
第一想到了require和include。
看require和include在php手册中的解释中,两个引用文件的语言结构均没有返回值,区别是include
() 产生一个警告而 require() 则导致一个致命错误。
1.那么我们在引用一个有返回数组的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包含文件重复,不会执行,需要分开执行
发现果真能拿到php文件返回来的数组。
2.我再次测试返回的是字符串,又会有什么情况呢
将第一个页面代码替换为:
<?php
return "网站制作学习网";
第二个代码则直接输出对应的变量。
结果输出"网站制作学习网";
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技术专栏