PHP Değişken Değişkenler

3 Cevap php

Ben bu comment sınıf yazıyorum:

class Comment {

    public $id;
    public $post_id;
    public $name;
    public $email;
    public $website;
    public $body;
    public $date;
    public $ip_address;
    public $status;

    function __construct($id) {

    	global $db;

    	$resc = $db->query("SELECT * FROM blog_comments WHERE id='$id' LIMIT 1");

    	while($row = $db->fetch_assoc($resc)) {
    		while ($comment = current($row)) {
        		$key = key($row);
    			$this->$key = $comment{$key};
    			next($row);
    		}
    	}
    }
}

İşte veritabanında çalıştırdığınızda Kurucuların içinde sorgu dönecektir budur:

query results

Bunu çalıştırdığınızda Ama, bu ne print_r olduğunu (yeni Yorum (1)); tükürür:

Comment Object
(
    [id] => 1
    [post_id] => 1
    [name] => J
    [email] => j
    [website] => h
    [body] => b
    [date] => 1
    [ip_address] => :
    [status] => 1
)

Herhangi Ben sadece her alanın ilk karakterini alıyorum neden fikir?

Teşekkürler.

3 Cevap

/ akım yanında ağrılı ve ben {} başvurusunun kaldırılması ile ne emin değilim.

Neden sadece:

$resc = $db->query("SELECT * FROM blog_comments WHERE id='$id' LIMIT 1");

while($row = $db->fetch_assoc($resc)) {
    foreach($row as $key=>$value){
       $this->$key = $value;
    }
}

İstediğiniz

$comment[$key]

$ Comment {$ anahtar} Sana bir dize inci karakterini verecektir. $ Anahtarının kendisi bir dize olduğundan, PHP bir tamsayı 0 ve ilk karakter olsun dönüştürür.

Ben bu hat değiştirmek gerekir düşünüyorum:

$this->$key = $comment{$key};

ile:

$this->$key = $comment[$key];