2013-04-12 3 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() 
{ 

} 

을하지만이 기능은 너무 음주와 흡연 (다른 사람들을 모두 처리하려고하기 때문에), 그때 나는 오른쪽 문자열을 얻기 위해 속성의 이름을 얻을 필요가있다.

어떻게 할 수 있습니까?

누군가가 나를 도울 수 있고 (나를 이해할 수 있음) 바랍니다. 이 방법으로 할 수 없다면 나는 그것을 할 수있는 또 다른 방법을 제안합니다.

미리 감사하십시오.

+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

스위치 케이스를 사용하여 케이스에 넣으십시오. ur 속성이 하나의 키가되고 값이 원하는 문자열이되도록 배열 응답을 만들 었는지 확인하십시오. 당신이이 질문에 대한 의견 요청으로 다시 생각 후

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 : "오직 파티에서 마셔 라.", "마시지 마라." 하지만 내가 smoknig에 대한 함수를 사용한다면 나는 그들이 다른 것을 말할 필요가있을 것입니다. 그래서 함수가 호출되는 속성을 알아야합니다. – jah

+0

내 업데이트 된 버전 확인 –

관련 문제