在PHP中创建关联数组的数组

在PHP中创建关联数组的数组,php,arrays,append,arrayofarrays,Php,Arrays,Append,Arrayofarrays,我想在while循环中创建一个关联数组。在while循环的每个元素中,我想在数组中添加一个新元素。我怎么能做到?之后,我想在foreach中传递这个数组并打印数据。我现在已经有了这部分代码,但很明显这部分代码有问题 while($row2 = mysql_fetch_array($result)) { $myarray = array("id"=>$theid, "name"=>name($id), "text"=>$row2[text]);

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

while($row2 = mysql_fetch_array($result))
{ 
    $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'];
}

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

例如:


如果您试图在每次迭代中添加到$myarray,请按如下方式执行:

$myarray[] = array("id"=>$theid, "name"=>name($id), "text"=>$row2[text]);
array_push($myarray, array("id"=>$theid, "name"=>name($id), "text"=>$row2[text]));
或者像这样:

$myarray[] = array("id"=>$theid, "name"=>name($id), "text"=>$row2[text]);
array_push($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>'
}
foreach($myarray作为$number=>$row)
{
回显'Number',$Number',:';
foreach($k=>v的行)
{
printf(“%s%s\n”,$k,htmlspecialchars($v));
}
回声“
}

谢谢!我在做更改,但忘了把它放回去。我有两个数组,我想把它们放在一个变量中。我正在使用这行代码$finalarray=$\u SESSION['SESS\u ARRAY']+$myarray;。但这又给mee带来了致命的错误。你能帮我吗?你不能添加两个数组。使用上面的代码。结果如下:$finalarray=array()$finalarray[]=$\u会话['SESS\u数组']$finalarray[]=$myarray;我有两个数组,我想把它们放在一个变量中。我正在使用这行代码$finalarray=$\u SESSION['SESS\u ARRAY']+$myarray;。但它给我带来了一个致命的错误。你能帮我吗?我已经用array_merge()解决了这个问题。