2016-03-14 34 views
0
public static function instantiate($record){ 
    $object = new self; 


    // $object->id = $record['UserID']; 
    // $object->username = $record['Username']; 
    // $object->password = $record['Password']; 
    // $object->first_name = $record['Fname']; 
    // $object->last_name = $record['Lname']; 
    // $object->email = $record['Email']; 

    foreach (array_unique($record) as $attribute => $value) { 

     if($object->has_attribute($attribute)){ 

      $object->$attribute = $value; 
      //var_dump($attribute);echo '<br>'; 
     } 
    } 
    return $object; 
} 

在這個函數中,我從兩個方面獲得這個$對象的值。從註釋部分和從未註釋(obv)開始的短路的漫長過程。PHP對象給一個字符串的值從一個mysqli_fetch_array

長方式給出了良好的結果作爲這樣的:

對象(用戶)#5(6){[ 「ID」] =>串(1)爲 「1」[ 「用戶名」] = > string(6)「Parley」[「password」] => string(5)「12345」[「first_name」] => string(8)「Cristian」[「last_name」] => string(8)「Pirloaga」 [ 「電子郵件」] =>串(27) 「[email protected]」}

短的方式給出了一個壞的結果作爲這樣的:

INT(0) INT(1) INT(2) INT(3) INT(4) INT(5) INT(6) 對象(用戶)#5(13){[ 「ID」] => NULL [ 「=」NULL [「password」] => NULL [「first_name」] => NULL [「last_name」] => NULL [「email」] => NULL [「0」] => string(1) 「1」[「1」] => string(8)「Cristian」[「2」] => string(8)「Pirloaga」[「3」] => string(27)「[email protected] 「[」4「] => string(6)」Parley「[」5「] => string(5)」12345「[」6「] => string(19)」2016-02-12 05:04: 22「}

int(1).. int(6)是$屬性值,after是對象。

我試圖匹配$屬性值與長途的這些領域。我該怎麼做? 這是一個來自教程的實際代碼,它適用於他而不是我。

我有第二個問題。 foreach循環總是將值加倍。在這種情況下,如果我刪除array_unique函數,它將在數據庫中顯示該結果兩次,它只有一行。爲什麼?

+1

我知道這不是你的問題,但是如果你想要一個包含你的數據的對象使用'mysqli_fetch_object'而不是'mysqli_fetch_array'。 –

回答

0

您可以通過使用mysqli_fetch_object而不是mysqli_fetch_array來得到想要的結果。

但回答你的問題:如果你使用mysqli_fetch_array,默認情況下你會得到一個包含數字鍵和相關鍵的數組。例如像:

array(
1 => 'john', 
2 => 'doe', 
'firstname' => 'john', 
'lastname' => 'doe' 
) 

要避免這種情況,你可以如這裏所描述的第三個參數int $result_type設置爲MYSQL_ASSOChttp://php.net/manual/de/function.mysql-fetch-array.php

使用MYSQL_ASSOC你會得到沒有數字鍵的排列,例如:

array(
'firstname' => 'john', 
'lastname' => 'doe' 
) 

這樣做,你的功能將工作,即使沒有array_unique在foreach。

+0

寬度MYSQLI_ASSOC我變得如此糟糕的結果:string(6) 「用戶名」 串(5) 「FNAME」 串(5) 「L-NAME」 串(5) 「電子郵件」 柱(8) 「用戶名」 串(8)「Password」 string(9)「Timestamp」 object(User)#5(13){[「id」] => NULL [「username」] => NULL [「password」] => NULL [ 「first_name」] => NULL [「last_name」] => NULL [「email」] => NULL [「UserID」] => string(1)「1」[「Fname」] => string(8) 「[」Lname「] => string(8)」Pirloaga「[」Email「] => string(27)」[email protected]「[」Username「] => string(6)」Parley「 「密碼」] =>字符串(5)「12345」[「時間戳」] =>字符串(19)「2016-02-12 05:04:22」} –

+0

非常感謝Mario A的mysql_object替代方案。現在即時按照這個教程,如何做,但在最後生病做這個升級。 –

相關問題