首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取PHP文件返回的值类型

获取PHP文件返回的值类型
EN

Stack Overflow用户
提问于 2020-12-15 20:15:44
回答 1查看 54关注 0票数 0

我试图将PHP文件的返回值赋值为变量的值,只有当该文件返回array value时。

假设我有一个具有以下内容的A.php文件:

文件:A.php

代码语言:javascript
复制
<?php

return [
   'One' => 1,
   'Two' => 2
];

我想在文件B.php中赋值,只有当文件A.php返回的值为数组类型时,由文件A.php返回的值才会返回。

我所做的是:

文件:B.php

代码语言:javascript
复制
class B
{
    public function __construct() {

        $array = include 'path/to/B.php';

        ...
    }
}

这样,我在$array变量中有了A.php文件返回的值,但是,如果在A.php文件中,而不是返回一个数组,我会写:

文件:A.php

代码语言:javascript
复制
<?php

echo 'Hello World!';

当将其包含到B.php文件中时,将对该文件的内容进行计算,并明显地生成一个包含以下内容的输出:

代码语言:javascript
复制
Hello World!

我不想要的。

我的问题是,只有当由$array返回的值为B.php类型时,才能将文件A.php返回的值赋给文件A.php中的变量A.php

我所看到的:

你能帮我解决我的问题吗?有什么优雅的方法吗?先谢谢你。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-15 20:24:35

您可以测试它的数组:

代码语言:javascript
复制
if(!is_array($array = include 'path/to/B.php')) {
    $array = null;  // or whatever
}

但是要处理可能包含输出某些内容的文件的实例,只需缓冲输出并清除它:

代码语言:javascript
复制
ob_start();
if(!is_array($array = include 'path/to/B.php')) {
    $array = null;  // or whatever
}
ob_end_clean();

如果找不到文件,include将返回false。如果找到并没有return某些内容,那么它将返回1

不推荐,但我不知道你到底想做什么。您可以提取returneval它:

代码语言:javascript
复制
//file A.php
$A = "return [
   'One' => 1,
   'Two' => 2
];";

//$A = file_get_contents('A.php');
    
preg_match('/return[^;]+;/', $A, $match);

if(isset($match[0])) {
    $array = eval($match[0]);
}
print_r($array);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65313058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档