我想在while循环中创建一个关联数组数组。在 while 循环的每次迭代中,我想在数组中添加一个新元素。我该怎么做?之后,我想在foreach中传递这个数组并打印数据。我现在有这部分代码,但显然有问题。
while($row2 = mysql_fetch_array($result))
{
$myarray = array("id"=>$theid, "name"=>name($id), "text"=>$row2['text']);
}
要在数组末尾添加元素,请使用 []
例:
$myarray[] = array("id"=>$theid, "name"=>name($id), "text"=>$row2[text]);
显然,好吧,首先把它拆开,这样就可以学习一些东西:
while($row2 = mysql_fetch_array($result))
{
...
}
这部分看起来没问题,我们来看看循环里面:
$myarray = array("id"=>$theid, "name"=>name($id), "text"=>$row2[text]);
有多个点。可能最重要的是,由于这是在循环内,因此在每次迭代中都会覆盖$myarray
。您想改为添加到数组中。让我们这样做:
$myarray = array(); # initialize the array first!
while($row2 = mysql_fetch_array($result))
{
$myarray[] = $row2; # add the row
}
之后,您可以输出它以证明它基本上有效:
var_dump($myarray);
这将显示一个包含所有行的数组。然后,您只需更改数据库查询,使其仅返回您感兴趣的字段。
如果您不能对数据库执行此操作,您也可以操作数组:
$myarray = array(); # initialize the array first!
while($row2 = mysql_fetch_array($result))
{
$myarray[] = array(
"id" => $theid,
"name" => name($id),
"text" => $row2['text']
);
}
var_dump($myarray);
现在结果应该看起来像你想要的。要输出$myarray
:
foreach ($myarray as $number => $row)
{
echo '<div>Number ', $number, ':<dl>';
foreach ($row as $k => $v)
{
printf("<dt>%s</dt><dd>%s</dd>'n", $k, htmlspecialchars($v));
}
echo '</dl></div>'
}
如果您尝试在每次迭代中添加$myarray,请按照以下步骤操作:
$myarray[] = array("id"=>$theid, "name"=>name($id), "text"=>$row2[text]);
或者像这样:
array_push($myarray, array("id"=>$theid, "name"=>name($id), "text"=>$row2[text]));
显然您对$row2
的访问看起来是错误的,所以我认为这里是对的
$myarray = array();
while($row2 = mysql_fetch_array($result)) {
// append something to your array with square brackets []
$myarray[] = array("id"=> $row2['id'], "name" => $row2['name'], "text"=>$row2['text']);
// or to maker this even shorter you could do
$myarray[] = $row2; // ... because it has the same array key names
}
然后稍后当您想从中读取时:
foreach($myarray as $val) {
echo $val['name'].' (ID: '.$val['id'].') wrote following text: '.$val['text'];
}