12

我想在 while 循环中创建一个关联数组的数组。在 while 循环的每次迭代中,我想在数组中添加一个新元素。我怎么能这样做?之后,我想在 foreach 中传递这个数组并打印数据。我现在有这部分代码,但显然有问题。

while($row2 = mysql_fetch_array($result))
{ 
    $myarray = array("id"=>$theid, "name"=>name($id), "text"=>$row2[text]);
                            }
4

4 回答 4

24

要在数组末尾添加元素,请使用[]
示例:

$myarray[] = array("id"=>$theid, "name"=>name($id), "text"=>$row2[text]);
于 2012-04-18T22:02:12.490 回答
7

显然,好吧,先把它拆开,这样有一些东西要学:

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>'
}
于 2012-04-18T22:04:48.203 回答
4

如果您尝试在每次迭代中添加到 $myarray,请执行以下操作:

$myarray[] = array("id"=>$theid, "name"=>name($id), "text"=>$row2[text]);

或像这样:

array_push($myarray, array("id"=>$theid, "name"=>name($id), "text"=>$row2[text]));
于 2012-04-18T22:03:56.160 回答
2

显然你的访问$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'];
}
于 2012-04-18T22:01:49.243 回答