2012-09-02 66 views
-5

我一直在關注一個非常有趣的教程,它真正測試了我編寫Php的能力。我一直認爲我是男人,但我卻變得更糟。話雖如此,在教程中解釋了實例化一個對象的要求,所以我輸入了這段代碼,不要誤解我的錯誤,一切正常,沒有任何問題。最重要的是我不明白底下是如何工作的,這就是爲什麼我希望有人向我解釋更多。 當我使用MySQL_fetch_array從數據庫中提取記錄時,我的問題是什麼以及如何將數據呈現給接收變量。例如婁面向對象的PHP和陣列

private static function instantiate($record){ 
$object = new self; 
    foreach($record as $attribute => $value){ 
    if($object->has_attribute($attribute)){ 
     $object->$attribute =$value; 
    } 
    } 
    return $object; 
} 

,如果我有一個表中3個字段如姓名,年齡,地址和值,讓說Jhone,23,亞利桑那州將是什麼店的屬性,這將是在密鑰存儲和索引在哪裏以及foreeach如何從數據庫中提取這些數據,如上例所示,並將其分配給另一個數組。請我不需要任何代碼我的代碼工作正常,我需要的是一個非常原始和清晰的解釋。並且事先真的很感謝你的支持。

+4

作爲一個程序員大約知道接受你懂得一點。 –

+1

你雖然_you是man_,但不知何故,你還在使用'mysql_ *'?你從來沒有聽說過或閱讀過ArrayAccess接口......? –

+0

另外,請不要使用'mysql_ *'函數來編寫新的代碼。他們不再維護,社區已經開始[棄用程序](http://goo.gl/KJveJ)。請參閱* [紅盒子](http://goo.gl/GPmFd)*?相反,您應該瞭解[準備好的語句](http://goo.gl/vn8zQ)並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli的)。如果你不能決定哪些,[這篇文章](http://goo.gl/3gqF9)會幫助你。如果你選擇PDO,[這裏是很好的教程](http://goo.gl/vFWnC)。 –

回答

0

真正有用的是打印出你的方法中的東西(例如print_r)。例如,嘗試這與你的方法:

private static function instantiate($record){ 
print_r($record); 
 $object = new self; 
print_r($object); 
   foreach($record as $attribute => $value){ 
    echo "attribute: $attribute, value:$value <br />"; 
     if($object->has_attribute($attribute)){ 
      $object->$attribute =$value; 
     } 
   } 
    print_r($object); 
    die(); 
   return $object; 
 } 

這樣的話,你可以清楚地看到正在發生的事情與物體,等的foreach

+0

'var_dump()'通常更有用,但也適用。 –

1
/** 
* @param array $record Record as returned from database 
* 
*/ 
private static function instantiate($record){ 
    //Create a new instance of this class. 
    $object = new self; 
    //Iterate the record to find all of the data 
    foreach($record as $attribute => $value){ 
     //If this class has a defined attribute which was found in the record 
     if($object->has_attribute($attribute)){ 
      //Set it to the value from the database. 
      $object->$attribute =$value; 
     } 
    } 
    //Return the instance for others to use 
    return $object; 
} 

這裏是你的功能,回頭看你的文檔。

+0

我知道你說的所有我不需要評論。我想你不明白我的問題。記錄的結構正在被拉取,它如何被存儲在數組的Key和Value部分。現在您有一個字段名稱和字段時間什麼是密鑰,什麼是值,以及存儲屬性的位置和索引是什麼。這是我想了解的,我敢打賭,聰明的嘴巴Elias Van Ootegem無法回答我的問題。 –

+0

關鍵是「年齡」,value是從數據庫中獲取的該行的「age」的值。 「屬性」就是我們稱之爲對象一部分的變量(就像對象的一部分被稱爲**方法**一樣)。 –

+0

@SalimAlmughairi爲什麼你不試試我的建議,所以你可以看到你在這裏問的所有事情。另外,儘量保持禮貌('聰明的嘴'的評論)。有時很難從書面來源獲得某人的意圖(換句話說,也許Elias沒有得到你的幽默感)。我們都盡力回答你的問題,有時候會有批評,有時候會有評論,有時會有代碼。嘗試欣賞所有方法。 –