簡體   English   中英

我們如何在 php 7.41 版本中顯示 json 數據?

[英]How can we show json data in php version 7.41?

我試圖在下面的代碼中獲取 $schedule 的值,並且還想將其轉換為數組。 我已經編寫了代碼,但無法理解問題所在。 代碼是:

class Amortization
{
    private $loan_amount;
    private $term_years;
    private $interest;
    private $terms;
    private $period;
    private $currency = "XXX";
    private $principal;
    private $balance;
    private $term_pay;

    public function __construct($data)
    {
        if ($this->validate($data)) {


            $this->loan_amount = (float)$data['loan_amount'];
            $this->term_years = (int)$data['term_years'];
            $this->interest = (float)$data['interest'];
            $this->terms = (int)$data['terms'];

            $this->terms = ($this->terms == 0) ? 1 : $this->terms;

            $this->period = $this->terms * $this->term_years;
            $this->interest = ($this->interest / 100) / $this->terms;

            $results = array(
                'inputs' => $data,
                'summary' => $this->getSummary(),
                'schedule' => $this->getSchedule(),
            );

            $this->getJSON($results);
        }
    }

    private function validate($data)
    {
        $data_format = array(
            'loan_amount' => 0,
            'term_years' => 0,
            'interest' => 0,
            'terms' => 0
        );

        $validate_data = array_diff_key($data_format, $data);

        if (empty($validate_data)) {
            return true;
        } else {
            echo "<div style='background-color:#ccc;padding:0.5em;'>";
            echo '<p style="color:red;margin:0.5em 0em;font-weight:bold;background-color:#fff;padding:0.2em;">Missing Values</p>';
            foreach ($validate_data as $key => $value) {
                echo ":: Value <b>$key</b> is missing.<br>";
            }
            echo "</div>";
            return false;
        }
    }

    private function calculate()
    {
        $deno = 1 - 1 / pow((1 + $this->interest), $this->period);

        $this->term_pay = ($this->loan_amount * $this->interest) / $deno;
        $interest = $this->loan_amount * $this->interest;

        $this->principal = $this->term_pay - $interest;
        $this->balance = $this->loan_amount - $this->principal;

        return array(
            'payment' => $this->term_pay,
            'interest' => $interest,
            'principal' => $this->principal,
            'balance' => $this->balance
        );
    }

    public function getSummary()
    {
        $this->calculate();
        $total_pay = $this->term_pay * $this->period;
        $total_interest = $total_pay - $this->loan_amount;

        return array(
            'total_pay' => $total_pay,
            'total_interest' => $total_interest,
        );
    }

    public function getSchedule()
    {
        $schedule = array();

        while ($this->balance >= 0) {
            array_push($schedule, $this->calculate());
            $this->loan_amount = $this->balance;
            $this->period--;
        }

        return $schedule;

    }

    private function getJSON($data)
    {
        header('Content-Type: application/javascript');
        echo json_encode($data);
    }
}

$data = array(
    'loan_amount' => 20000,
    'term_years' => 1,
    'interest' => 10,
    'terms' => 12
);


$amortization = new Amortization($data);
$amortization = json_decode($amortization, true);
$schedule = $amortization['schedule'];

它顯示我的錯誤為:

在此處輸入圖片說明

請更改您的 getJSON 函數,如下所示:

public function getJSON($data)
{
    return json_encode($data);
}

而你的構造函數為:

public function __construct($data)
{
    if ($this->validate($data)) {


        $this->loan_amount = (float)$data['loan_amount'];
        $this->term_years = (int)$data['term_years'];
        $this->interest = (float)$data['interest'];
        $this->terms = (int)$data['terms'];

        $this->terms = ($this->terms == 0) ? 1 : $this->terms;

        $this->period = $this->terms * $this->term_years;
        $this->interest = ($this->interest / 100) / $this->terms;

        $results = array(
            'inputs' => $data,
            'summary' => $this->getSummary(),
            'schedule' => $this->getSchedule(),
        );

        $this->result_json = $this->getJSON($results);
    }
}

public function getResultJson()
{
    return $this->result_json;
}

現在最后,得到結果:

$amortization = new Amortization($data);
$amortization = json_decode($amortization->getResultJson(), true);
$schedule = $amortization['schedule'];

但老實說,你的類需要很多修改。 您通常不使用構造函數返回任何內容。 這需要通過類中的某些方法來完成,例如getResultsInJSON()或其他方法,您可以在其中完成所有數學或邏輯工作。

希望有幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM