使用JSON API调用时构造OOP Php方法和对象

时间:2014-03-25 03:20:04

标签: php arrays json oop

我正在创建一个通过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]引用求和]。

如果你能帮助我会非常感激 - 我一直试图让我的头围绕物品和课程好几周!

0 个答案:

没有答案