2012-04-04 18 views
0

私はPHPとCodeigniterをかなり使い慣れています。PHP配列変数に値が割り当てられています

Iは、連絡先の詳細は、タイプがいずれかの(1,2,3,4)は、(Facebookの、モバイル、BBM、MSN、さえずり)にマッピングされ、この形式で保存されている:

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が存在していなかった言うように、モバイルやTwitterは何も割り当てられていないはず、ほとんど動作しているようですが、間違いがなければなりません!それでも私の出力では前の値から値を得ています。たとえば、bbm = mobileとtwitter = msnです。

ケースが設定されていない場合、これらのアレイはどのように存在しますか?または私の論理が間違っていますか?

+0

あなたの答えは、 'getContactDetails()'がこれを受け入れることを示唆しているので、あなたの答えは 'break;'回答のどれかですが、 'switch'(*とおそらく' foreach' *単一の '$ userid'です。 ** that **の場合、それぞれの 'case '自体が関数から戻るので、' break; 'は必要ありません。 – Dan

答えて

7

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

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

など

+0

Oh My!私は新しい、おかげできだと言った! – Lunar

0

あなたは、変数を設定した後、それぞれの場合におけるbreak;を必要としています。

関連する問題