私は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 のように、前の値が返されます。
ケースがそれらを設定していないときに、これらの配列が存在する可能性はありますか? それとも私の論理が間違っていますか?