【www.gdgbn.com--php入门】
首先,我们用数组模拟一个参数传递。接收到的是一组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 "";
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 "
" . $v . "
" . $names . "
" . $mobile . "
";
}
echo "";
然后,写到这里后,我就运行这个页面了,可是,当我运行完了页面后,发现,出问题了:
如图所示,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() 了,