空变量值

时间:2014-12-30 22:50:06

标签: php html

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()处理。

任何人都可以告诉我,我在哪里做错了,并帮助解决问题?

2 个答案:

答案 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);
?>