[英]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.