最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
php教程 foreach unset
时间:2009-11-06 编辑:简简单单 来源:一聚教程网
首先,我们用数组模拟一个参数传递。接收到的是一组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 '
' . $v . ' | ' . $names . ' | ' . $mobile . ' |
然后,写到这里后,我就运行这个页面了,可是,当我运行完了页面后,发现,出问题了:
如图所示,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 isset与unset区别与使用方法 12-01
- PHP导出数据超时的优化建议解读 10-31
- PHP之mysql位运算解析 10-31
- Laravel实现登录跳转功能解析 10-31
- php双向队列解读 10-31
- Laravel异常上下文解决教程 10-24