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 の値になる場合があります。次に、その整数を対応する文字列に変換する関数が必要です。たとえば、飲酒の場合は「Drinking at party only」、喫煙の場合は「I don't Smoke」などです。

すべてのプロパティに対してこれを処理できる関数が 1 つだけ必要です。

私は次のようなことを考えていました:

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

そして、次のような関数を用意します。

public function number_to_text()
{

}

しかし、この関数は飲酒と喫煙 (およびその他) の両方を処理するため、適切な文字列を取得するにはプロパティの名前を取得する必要があります。

どうすればそれができますか?

誰かが私を助けてくれることを願っています(そして私を理解してください)。この方法で実行できない場合は、別の方法を提案します。

前もって感謝します

4

2 に答える 2

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}];

もっと単純だと思います。

于 2013-04-12T11:50:10.727 に答える
0

Switch ケースを使用して、ケースをその機能に入れます。配列応答にしたので、urプロパティは1つのキーになり、値は必要な文字列になります。

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


}
于 2013-04-12T11:26:31.880 に答える