php教程 foreach unset

來源:互聯網
上載者:User

首先,我們用數組類比一個參數傳遞。接收到的是一組ID,我在這裡給它命名為 $nums:


$nums[] = 1;

$nums[] = 2;

$nums[] = 3;

$nums[] = 4;


然後,我們用 $data 數組摸擬一個資料表中存放的內容,有ID,使用者名稱:


$data[0]['id'] = 1;

$data[0]['name'] = 'aaa';

$data[1]['id'] = 2;

$data[1]['name'] = 'bbb';

$data[2]['id']      = 3;

$data[2]['name']   = 'ccc';

$data[3]['id']      = 4;

$data[3]['name']   = 'ddd';


接下來,我們再用 $rs 數組摸擬另一個表中存放的內容,也是相對應的,有相同的ID,然後這個表中存放的是電話號碼:


$rs[0]['id']       = 1;

$rs[0]['mobile']   = '1111111';

$rs[1]['id']       = 2;

$rs[1]['mobile']   = '2222222';

$rs[2]['id']       = 10;

$rs[2]['mobile']   = '3333333';

$rs[3]['id']       = 4;

$rs[3]['mobile']   = '4444444';

 

 

 

 

 


現在,我們要做的就是要從 $data 和 $rs 這兩個數組中,讀取出與ID相對應的使用者名稱和電話號碼,用列表顯示出來:


echo '<table width=400 align=center border=1>';


foreach ($nums AS $k => $v) {


    // 類比讀取資料庫中 $nums == $data['id'] 的資料, 擷取使用者名稱

    foreach ($data AS $kd => $vd) {

        if ($v == $vd['id']) {

            $names = $vd['name'];

        }

    }


    // 類比讀取資料庫中 $nums == $rs['id'] 的資料, 擷取手機號碼

    foreach ($rs AS $kr => $vr) {

        if ($v == $vr['id']) {

            $mobile = $vr['mobile'];

        }

    }


    echo '<tr>

                <td>' . $v . ' </td>

                <td>' . $names . ' </td>

                <td>' . $mobile . ' </td>

            </tr>';

}


echo '</table>';

 

然後,寫到這裡後,我就運行這個頁面了,可是,當我運行完了頁面後,發現,出問題了:

 


如圖所示,ID == 3 的使用者的電話號碼變成了ID == 2 ,的電話號碼了。


為什麼會這樣呢。。讓我們來檢查一下我們的代碼吧:


首先,$nums 數組中的“id”是1,2,3,4  沒錯,$data 數組中的“id”也是1,2,3,4  也沒錯,但是, $rs 數組中的“id“卻有問題了,是 1,2,10,4。這裡就沒有3了。


所以讀取不到電話號碼。但是為什麼在 id == 3 的那一列中,電話號碼會顯示出 id == 2的電話號碼呢?我們接著往下看:


 // 類比讀取資料庫中 $nums == $rs['id'] 的資料, 擷取手機號碼

    foreach ($rs AS $kr => $vr) {

        if ($v == $vr['id']) {

            $mobile = $vr['mobile'];

        }

    }


我們是在這裡給 $mobile 賦的值,當  $nums 中的“id” 等於 $rs 中的 “id” 時,它就把 $rs 中的電話號碼賦給 $mobile變數,當執行完 id == 2 以後,進行第三次迴圈時,我們發現,這裡條件不符,所以直接跳過了。 但是,$mobile 的值仍然是 id == 2 的時候的值! 對。這就是問題所在了!


找到問題過後,小編我休息了下,喝了口涼水,然後在foreach語句結束之前把所有迴圈的變數全部給unset() 了,

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.