我正在创建一个通过CURL通过JSON提取数据的应用程序。我正在使用PHP,我的脚本目前创建了2个不同的对象来包含curl请求。我有可读格式的数据,但我需要将第一次调用的平均值除以第二次调用的平均值。
这个平均值与每个调用具有相同的相关性 - 我是处理对象和类的新手,所以我很难理解如何以正确的方式构造它。以下代码行不起作用 - 但是,如果您继续阅读它将有助于解释我正在尝试做什么。
$yield = object1->calculate_average($list)->average['price']/object2->calculate_average($list)->average['price'];
我想将$yield
变量编码到列表类中,作为在我调用$anobject->yield
时显示的另一种方法。我应该通过a)object1,b)object2来访问它,或者c)它自己的对象(它似乎过多......它只会偶尔使用)。有没有正确的方法来做到这一点,还是不重要?
我的查询是通用的(当对象看起来与所有选项相关时,使用对象的最佳方法是什么,并且可以引用这样的数组:calculate_average($list)->average['price'])
尽可能具体(我该如何修复这个脚本)
在我出现这种情况之前,我倾向于从源代码中重新调整数据并捏造它,但因为它是一个JSON调用因此需要更长的时间,所以我被提示找到更好的解决方案......
到目前为止,我的最佳努力的简化版本如下。
我假设我需要在json输出上使用foreach:
class listing {
//This takes a stdClass object from the JSON and prepares it to be served
public function output_list($data) {
$price = "0";
$vals = "0";
$list = array();
foreach ($data->listing as $item) {
//Calculate average price
$price = $price + $item->price;
$vals = $vals + 1;
//Display information about each item
$list[$vals][] = "Price: £" . $item->price . " and various data";
$list[$vals][] = ...;
}
return $list;
}
// This function calculates equations on the data which I read above
public function calculate_average($list) {
$average = array();
$total_price = array_column($list, '1'); //Find the total sum of list[?][1] which = price
$vals = count($list); //count the number of values in the list
$average['denominator'] = $vals;
$average['week'] = $total_price / $average['denominator'];
//And a number of other calculations within the array...
return $average;
}
}
然后我想通过使用以下代码来调用它们:
$object1 = new listing();
$list1 = $object1->output_list($response); ////Output formatted data
print_r($list1);
$average = $object1->calculate_average($list);
$object2 = new listing();
$list2 = $object2->output_list($response); ////Output formatted data
print_r($list2);
$average = $object2->calculate_average($list);
另一件事是$total_price = array_column($list,'1')
需要我有PHP 5.5 - 我没有,所以我需要找到一个替代方案 - 这让我怀疑我的数组方法是否是正确的第一名。 [我需要对我制作的多维数组中的每个[?] [1]引用求和]。
如果你能帮助我会非常感激 - 我一直试图让我的头围绕物品和课程好几周!