Php 如何在不调用字符串的情况下“解除”包装在字符串中的对象?

Php 如何在不调用字符串的情况下“解除”包装在字符串中的对象?,php,laravel,Php,Laravel,我有一个数组,其中的值是包装为字符串的对象,如何在不调用它们的情况下将它们转换回对象['randomNumber'=>'$this->faker->randomNumber()'] 此数组正在传递到存根(写入php文件): 而不是获取此数组: $mappedResults = ['randomNumber' => $this->faker->randomNumber()] 我得到了这个数组: $mappedResults = ['randomNumber' => '$t

我有一个数组,其中的值是包装为字符串的对象,如何在不调用它们的情况下将它们转换回对象<代码>['randomNumber'=>'$this->faker->randomNumber()']

此数组正在传递到存根(写入php文件):

而不是获取此数组:

$mappedResults = ['randomNumber' => $this->faker->randomNumber()]
我得到了这个数组:

$mappedResults = ['randomNumber' => '$this->faker->randomNumber()']

如果要使用方法调用的返回值作为映射中的值,可以使用
eval

foreach ($mappedResults as $key => $value)
    $mappedResults[$key] = eval($value)
注意
eval
返回NULL,除非在代码字符串中调用了return语句。然后返回传递给return的值。如果代码字符串中存在解析错误,eval()将返回FALSE

因此,您不希望调用和计算代码,根据我的理解,您希望重新创建php文件,您应该使用一个可以删除引用的自定义导出函数:

function export($input) {
    $response = [];
    foreach($input as $key => $value)
        $response[] = var_export($key, true) . " => " . $value;
    return "[".implode(",",$response)."]";
}


这不是“包装为字符串的对象”,而是一段PHP代码。@miken32如何删除引号?不;没有引号,它只是一个字符串。@miken32请重读,这里有一个详细的问题,我知道字符串的抽象结构,问题不是关于值,而是一个技术问题,在经过
var\u export()
之后将字符串转换为对象。使用
var\u export()
的目的是什么?这似乎是一个设计缺陷,如果我们有更多的上下文来提供另一种方法,它可能会得到更好的实现@clusterBuddy你能告诉我是什么问题吗?我得到这样的结果:['randomNumber'=>this->faker->randomNumber()]当然,当我将它传递给存根时,它显示为数组(在前面的评论中发送给您)。显然,这与拉威尔的存根有关。对不起,我不知道存根和拉维的事。
function export($input) {
    $response = [];
    foreach($input as $key => $value)
        $response[] = var_export($key, true) . " => " . $value;
    return "[".implode(",",$response)."]";
}