0

私はPHPとCodeigniterにかなり慣れていないので、これは簡単だと確信しています。

タイプが (1,2,3,4) から (facebook、mobile、bbm、msn、twitter) にマッピングされているこの形式で保存されている連絡先の詳細があります。

ID | USERID | TYPE | VALUE
1  |    8   |  2   | 076773635

これらの連絡先の詳細にアクセスするためのモデルを設定しました。何もないか、せいぜい各タイプの 1 つです。

function getContactDetails($userid) {
    $query = $this->db->query("SELECT * FROM who_user_contact_info WHERE userid=".$userid);

    foreach ($query->result() as $row)
    {
        switch ($row->type) {
            case 1:
                $contact['facebook'] = $row->value;  
            case 2:
                $contact['mobile'] = $row->value; 
            case 3:
                $contact['bbm'] = $row->value; 
            case 4:
                $contact['msn'] = $row->value;  
            case 5:
                $contact['twitter'] = $row->value; 
        }

    }


    return $contact;
}

次に、コントローラーがこのデータをビューに渡しました。

<h3>Contact Info</h2>
<?php   
    echo "Facebook: ". $facebook ."<br />";
    echo "mobile:".  $mobile ." <br />";
    echo "bbm:".  $bbm ." <br />";
    echo "msn:".  $msn ." <br />";
    echo "Twitter:".  $twitter ." <br />";
?>

これはほとんど機能しているように見えますが、間違いがあるに違いありません。たとえば、タイプ 3 と 5 が存在しなかったとします。mobile と twitter には何も割り当てられていないはずです! それでも私の出力では、bbm=mobile や twitter=msn のように、前の値が返されます。

ケースがそれらを設定していないときに、これらの配列が存在する可能性はありますか? それとも私の論理が間違っていますか?

4

2 に答える 2

7

各ケースの下に休憩を入れる必要はありませんか?

case 1:
$contact['facebook'] = $row->value;  
break;

于 2012-04-04T13:00:50.253 に答える
0

break;変数を設定した後、それぞれの場合にが必要です。

于 2012-04-04T13:02:07.600 に答える