while循环中的PHP开关
我使用PHP开关从mysql数据库中获得两个相同的条目。我已经把问题隔离到这里了,也许有人可以放纵我$mySQL->Fetch()只获取查询中的下一行 以下是我的工作内容:while循环中的PHP开关,php,html,mysql,foreach,switch-statement,Php,Html,Mysql,Foreach,Switch Statement,我使用PHP开关从mysql数据库中获得两个相同的条目。我已经把问题隔离到这里了,也许有人可以放纵我$mySQL->Fetch()只获取查询中的下一行 以下是我的工作内容: while($row = $mySQL->Fetch()) { switch($filter) { case 1: case 2: $data[] = array(150, $row["lastName"]); $data[] = array(125, $row["fir
while($row = $mySQL->Fetch())
{
switch($filter)
{
case 1:
case 2:
$data[] = array(150, $row["lastName"]);
$data[] = array(125, $row["firstName"]);
$data[] = array(100, $row["city"]);
$data[] = array(75, $row["state"]);
$data[] = array(100, FormatPhone($row["phone"]));
$data[] = array(125, $row["registrationDate"]);
$data[] = array(125, $row["expirationDate"]);
$id = $row["id"];
echo "<a href=\"?dp=profile&filter=member&id=$id\"><ul class=\"search\">";
foreach($data as $key => $value)
{
echo "<li style=\"width:$value[0]px\">$value[1]</li>";
}
echo "</ul></a>";
break;
}
}
while($row=$mySQL->Fetch())
{
交换机($filter)
{
案例1:
案例2:
$data[]=数组(150,$row[“lastName”]);
$data[]=数组(125,$row[“firstName”]);
$data[]=数组(100,$row[“城市]);
$data[]=数组(75,$row[“state”]);
$data[]=数组(100,FormatPhone($row[“phone”]);
$data[]=数组(125,$row[“registrationDate”]);
$data[]=数组(125,$row[“expirationDate”]);
$id=$row[“id”];
回声“;
打破
}
}
由于某种原因,名单还在不断增加。我一定忽略了一些显而易见的事情,但我就是找不到
以下是HTML输出的内容:
<ul class="search">
<li style="width:150px">Jones</li>
<li style="width:125px">Bob</li>
<li style="width:100px">City</li>
<li style="width:75px">NH</li>
<li style="width:100px">(123) 456-7890</li>
<li style="width:125px">2013-01-20</li>
<li style="width:125px">2014-07-31</li>
<li style="width:150px">Doe</li>
<li style="width:125px">Jane</li>
<li style="width:100px">Little Town</li>
<li style="width:75px">NH</li>
<li style="width:100px">(123) 456-7890</li>
<li style="width:125px">2013-01-20</li>
<li style="width:125px">2014-07-31</li>
</ul>
琼斯
鲍勃
城市
NH
宽度:100px(123)456-7890
2013-01-20
2014-07-31
- Doe
简
小镇
NH
宽度:100px(123)456-7890
2013-01-20
2014-07-31
它不是一个而是两个。但我确保关闭我的无序列表标签。。更不用说,在此之后的每个条目的大小都在继续增长,合并了迄今为止的所有条目。是否每次都需要清除查询??谢谢在第一次迭代中添加第一次之后发生的事情,对于下一次迭代,它再次将下一个元素放入
$data
中,并且当您使用like$data[]=$next_element
时,之前的数据不会从$data数组中删除,因此在每次迭代之后,取消设置数组。这应该可以。我相信您的答案在于PHP变量作用域的动态特性。请注意,在使用$data之前,您不必声明$data?PHP假设您需要一个名为data的变量,并推断您需要一个数组,因为您使用[]将其追加到数组中。在while循环的每次迭代中,您都会像应该的那样将行结果附加到$data,但是您从未告诉PHP您想要一个“新的”$data变量。我建议明确声明$data,如下所示:
while($row=$mySQL->Fetch()){
$data=array();
交换机($filter){
//案例陈述
这将在每次迭代开始时将$data重新初始化为空数组,确保您只为当前行创建列表项。替换:
$data[] = array(150, $row["lastName"]);
$data[] = array(125, $row["firstName"]);
$data[] = array(100, $row["city"]);
$data[] = array(75, $row["state"]);
$data[] = array(100, FormatPhone($row["phone"]));
$data[] = array(125, $row["registrationDate"]);
$data[] = array(125, $row["expirationDate"]);
与:
您每次迭代都要对单个$data
数组进行变异,而不是每次迭代都要创建一个新数组。在中断之前添加unset($data);
尝试echo”“;打印($data)?
$data = array(
array(150, $row["lastName"]);
array(125, $row["firstName"]),
array(100, $row["city"]),
array(75, $row["state"]),
array(100, FormatPhone($row["phone"])),
array(125, $row["registrationDate"]),
array(125, $row["expirationDate"]),
);