2013-04-12 71 views
1

我正在從我的數據庫中檢索一個整數,該值在輸出時應與文本字符串對應。對象屬性爲文本

$sql = ('SELECT drinking, smoking FROM users WHERE id = ?') 

$q = $this->db->query($sql, $this->session->userdata('user_id')); 

if ($q->num_rows() === 1) { 
    $userobject = $q->row(); 
} 

這可能會得到值爲1喝酒和吸菸2。然後我想要一個函數將該整數轉換爲相應的字符串。例如「喝酒只在派對上」喝酒,「我不吸菸」吸菸。

我想只有一個函數可以處理所有的屬性。

我的想法做類似的:

$userobject->drinking = number_to_text($userobject->drinking); 

再有這樣的功能:

public function number_to_text() 
{ 

} 

但由於此功能是要同時處理飲酒和吸菸(和其他太),那麼我需要獲取屬性的名稱才能獲取正確的字符串。

如何做到這一點?

希望有人能幫助我(並理解我)。如果不能這樣做,我會採取另一種方式來建議。

Thankyou預先

+0

你試過了什麼? –

+1

只需將它作爲參數傳遞,使'function number_to_text($ value,$ type_of_activity){...}' – Voitcus

+0

Voitcus:我當然可以這樣做,沒有想到這一點。但是,如果它有可能取得財產的名稱,那會更容易一些?但是,如果沒有,我會去那 – jah

回答

2

正如你在評論這個問題的要求,我把我的建議,但是,重新思考後,有一個更好的解決方案,你可以在下面找到。

首先,如我的評論。

您可以簡單地將活動作爲參數,例如聲明您的功能

function number_to_text($value, $type_of_activity){ 
    switch ($type_of_activity){ 
    case 'drinking': 
     switch($value){ 
     case 1: return "I'm drinking a lot"; break; 
     case 2: return "I've never tasted alcohol, I'm too young for that"; break; 
     // 
     } // switch($value) 
     break; 
    case 'smoking': 
     switch($value){ 
     case 1: return 'I smoke as a steam engine'; break; 
     case 2: return 'I saw once a smoke and since then I keep away from it'; break; 
     // 
     } // switch($value) 
     break; 
    } // switch $type_of_activity 
    return ''unknown'; 
} 

但是......

正如你可以看到它是相當複雜的語句。

二,容易一個。

您可以創建與所有喜歡的文本的數組:

$activities['drinking'][1] = "I'm drinking a lot"; 
$activities['drinking'][2] = "I've never tasted alcohol, I'm too young for that"; 
$activities['smoking'][1] = "I smoke as a steam engine"; 
$activities['smoking'][2] = "I saw once a smoke and since then I keep away from it"; 

只憑

$activity = 'drinking'; 
$userobject->{$activity} = $activities[$activity][$userobject->{$activity}]; 

簡單多了,我認爲把它。

0

使用Switch案例並將您的案例放入該函數。看到我已經做了一個數組響應,所以你的屬性將是一個鍵,值將是你想要的字符串。

public function number_to_text($text) 
{ 
    switch($text) { 
     case 1: 
     $arr['property'] = 'drinking'; 
     $arr['val']  = "Drinking at parties only"; 
     return $arr; 
     break; 


} 
+0

我認爲你誤會了。從數據庫中我得到1,2或3的值例如。 如果我然後使用函數喝酒,我希望它返回一串:1:「是的,我正在喝酒」,2:「只在派對上喝酒」,3:「從不喝酒」。但是,如果我使用smoknig的功能,我需要他們說些不同的東西。所以我需要知道函數被調用的屬性。 – jah

+0

檢查我更新的asnwer –