php
我还是新手。
这是我的代码:
<!DOCTYPE html>
<html>
<head>
<title>
Data buku alamat dengan class
</title>
</head>
<?php
class orang
{
public $nama="";
public $jk="";
public $tptLahir="";
public $tglLahir="";
function umur()
{
list($tgl,$bln,$thn) = explode('-',$tglLahir);
$lahir = mktime(0, 0, 0, (int)$bln, (int)$tgl, $thn);
$t = time();
$umur = ($lahir < 0) ? ( $t - $lahir ) : $t - $lahir;
$tahun = 60 * 60 * 24 * 365;
$tahunlahir = $umur / $tahun;
$umursekarang=floor($tahunlahir);
return $umursekarang;
}
function tampilkan()
{
echo "<hr>Nama : ".$this->nama;
echo "<hr>Jenis Kelamin : ".$this->jk;
echo "<hr>Tempat Lahir : ".$this->tptLahir;
echo "<hr>Tanggal Lahir : ".$this->tglLahir;
echo "<hr>Umur : ".$this->umur();
}
}
?>
<body>
<h1>
Script : Data buku alamat dengan class
</h1>
<?php
$orang1= new orang();
$orang1->nama="Jack";
$orang1->jk="laki-laki";
$orang1->tptLahir="Jakarta";
$orang1->tglLahir="12-09-1988";
$orang1->tampilkan();
?>
</body>
</html>
没有错误。 问题在于,$this->umur()
的结果是 15 ,而不是 26 。
似乎public $tglLahir
变量中的值未由函数umur()
处理。
任何人都可以告诉我,我在哪里做错了,并帮助解决问题?
答案 0 :(得分:3)
$tglLahir
是类orang
的属性,因此在umur()
中,而不是:
list($tgl,$bln,$thn) = explode('-',$tglLahir);
您需要将其作为属性引用($this->tglLahir
而不是$tglLahir
),所以:
list($tgl,$bln,$thn) = explode('-',$this->tglLahir);
答案 1 :(得分:2)
您不会调用班级$tglLahir
中的变量,请参阅:
list($tgl,$bln,$thn) = explode('-',$tglLahir);
所以只需将此行更改为:
list($tgl,$bln,$thn) = explode('-',$this->tglLahir);
您几乎自己发现了错误(It seem the value in public $tglLahir variable not processed by function umur()
)!我建议您在测试环境时添加错误报告,这样您就可以自己发现下一个错误。
<?php
ini_set("display_errors", 1);
error_reporting(E_ALL);
?>