我可以存储预先制作的数组遍历吗?
我想存储几个API调用,以及如何从响应中获取相关信息。
例如:
$url = 'http://maps.googleapis.com/maps/api/elevation/json?locations='.$location->$latitude.','.$location->$longitude.'&sensor=true';
$response = json_decode(file_get_contents($url), true);
$result = $response['results'][0]['elevation'];
我可以将此部分保存为字符串,以便存储在我的数据库或变量中:
$elevation = "['results'][0]['elevation']";
然后以某种方式使用它来解析响应,即
$result = $response[$elevation];
答案 0 :(得分:0)
答案是否定的,对不起!您需要按原样存储$response
并稍后使用正确的格式$response['results'][0]['elevation']
如果问题是关于如何将数组持久保存到数据库中,则可能需要使用serialize()
:
$db->insert(serialize($reponse));
然后当您从数据库中检索响应时,请使用unserialize:
$response=unserialize($db->fetchReponse());
$elevation=$response['results'][0]['elevation'];
修改强>
根据您在下方的评论,您似乎需要的是一个缓存。因此,在将请求发送到Web服务API之前,您的应用程序会检查缓存中是否已在本地提供数据。如上所示,您很可能希望序列化PHP数组,或者只是缓存原始响应,因为它是JSON格式(PHP序列化将创建非常相似的东西)。 您可以从查询参数:location等创建Cache密钥
如果您选择或在文件系统上,甚至在内存中,您的缓存对象都可以存储在数据库中。
查看ZF2缓存组件:
http://framework.zend.com/manual/2.0/en/modules/zend.cache.storage.adapter.html