如何在不调用字符串的情况下"解开"包裹在字符串中的对象



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

这个数组被传递到一个存根(写入一个php文件(:

$replace = [
'{{mappedResult}}' => var_export($mappedResults, 1),
];

而不是得到这个数组:

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

我得到了这个数组:

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

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

foreach ($mappedResults as $key => $value)
$mappedResults[$key] = eval($value)

注意,除非在代码字符串中调用了return语句,否则eval将返回NULL。然后返回传递给return的值。如果代码字符串中存在解析错误,eval((将返回FALSE。

因此,你不想调用和评估代码,根据我的理解,你想重新创建php文件,你应该使用一个可以删除报价的自定义导出函数:

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

最新更新