萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> php編程 >> php教程 foreach unset

php教程 foreach unset

首先,我們用數組模擬一個參數傳遞。接收到的是一組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() 了,

copyright © 萬盛學電腦網 all rights reserved