php - eval() 和 file_get_contents() .. 不同的结果
问题描述
我正在尝试将 eval() 与 json_decode(file_get_contents()) 一起使用,并且在对值进行评估和硬编码时得到了不同的结果。我只是错过了一些简单的东西吗?
我使用的是 PHP 版本 5.3.24,目前无法更改。如果对 eval() 支持至关重要,我可以开始对其进行更改。我没有发现任何表明我在当前的 PHP 实现中没有 eval() 支持的东西。
当我运行 Example1('key') 时,我从 eval() 函数返回 NULL。当我运行 Example2('key') 时,我得到一个基于 json 数据的数组,如下所示:
{ key_list: [ { data1_list: [ { subkey1: "data", subkey2: 0 }, .. ], .. ] }
这是示例 1():
function Example1($key) {
$endPoint = 'http:'.'//some.website.com/json/'.$key;
$evalCommand = sprintf('json_decode(file_get_contents("%s"))->%s_list[0];', $endPoint, $key);
echo '$evalCommand = |'.$evalCommand.'|<br />';
$resultsArray = eval($evalCommand);
return $resultsArray;
}
这是示例 2():
function Example2($key) {
$endPoint = 'http:'.'//some.website.com/json/'.$key;
$resultsArray = json_decode(file_get_contents($endPoint))->key_list[0];
return $resultsArray;
}
解决方案
而不是使用eval
,它可能能够使用更标准的代码并使用动态对象访问。
URL 的名称是可以的,但是对于该字段,有一些杂耍。这将名称设置为$field
,但我无法让它在一行中完成该部分和数组部分。在这里它用于->$field
获取数据并且[0]
返回...
function Example2($key) {
$endPoint = 'http://some.website.com/json/'.$key;
$field = $key.'_list';
$resultsArray = json_decode(file_get_contents($endPoint))->$field;
return $resultsArray[0];
}
推荐阅读
- git - git如何在远程和本地保留文件,但永远不要跟踪该文件的修改
- python - Python,在多个目录中一个一个删除文件
- java - 尽管程序一次扫描一个元素,但程序仍在无限地接受输入
- cumulative-sum - PowerBI年内(财政年度)按月累计
- arrays - 为什么我的数组中的原始项目被 Object.assign 覆盖?
- angularjs - Elastic Beanstalk:从 SPA 中删除 hashbang url
- javascript - 如何使用 CSS 进行单基索引?
- python-3.x - 如何根据Python中列中字符串的前缀过滤嵌套列表
- mysql - MYSQL sum() 排除记录
- jquery - JQuery - 删除列表项的返回 ID