这是我正在使用的php代码的结构
$Objects = $account->api1(); // This returns an object array with each object being O(data1, data2, data3)
$retValue = array();
foreach($Objects as $O)
{
if($O->data2 == 'something')
{
$data4 = $account->api2($O->data2); // returns a value $data4
// Initialize $tmp;
$tmp->data1 = $O->data1;
$tmp->data3 = $O->data3;
$tmp->data4 = $data4;
$retValue[] = $tmp;
}
}
基本上我需要的是以下对象数组,data2 ='something'
O(data1,data3,data4)
有没有办法可以简化这个过程。每个API呼叫都需要花钱,并且还涉及跨请求的请求,这使得这个过程既昂贵又缓慢。无论如何,这可以改进吗?性能/没有通话的改善都会有所帮助。
答案 0 :(得分:0)
重要提示:我假设您的问题中存在一些拼写错误以及以下等值
$data2
表示$O->data2
$O->data4
表示$data4
调用$account->api2($O->data2)
应始终返回相同的值
因为你总是检查$O->data2
是否等于"某事" ..
所以你可以只召唤一次,每当你受到打击时都会这样做。
<?php
$Objects = $account->api1(); // This returns an object array with each object being O(data1, data2, data3)
$retValue = array();
foreach($Objects as $O)
{
if($O->data2 == 'something')
{
// Here, you just call api2 the first time (or never, maybe, if you never needed to)
$data4 = isset($data4) ? $data4 : $account->api2($O->data2);
// Initialize $tmp;
$tmp->data1 = $O->data1;
$tmp->data3 = $O->data3;
$tmp->data4 = $data4;
$retValue[] = $tmp;
}
}
?>