当前位置:编程学习 > php >>

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() 了,

补充:Php教程,Php入门 
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,