在PHP中填充动态创建的数组


Populating dynamically-created arrays in PHP

我正在构建一个web应用程序,它有一个相当大(10K行)的引用表。

表引用具有类别、id和描述。

当我使用这个引用来填充下拉框之类的数据时,我试图将它们放在数组中。我首先将它们放在一个大数组中,但在我看来,在引用表中为每个类别设置一个数组更有效。

动态变量名已经创建,但从另一个数组填充它们是不起作用的。

$r_refcats = mysqli_query($global_dbh,"select distinct(cat) from reference");
while(($row = mysqli_fetch_array($r_refcats)) != false){ $$row[0]=array();};
$r_references = mysqli_query($global_dbh,"select cat,id,description from reference");
while(($row = mysqli_fetch_array($r_references)) != false) { $$row[0]=array($row);}

因为我不能在最后一行使用$$row[0][],所以它一直覆盖相同的值:)

关于如何正确地做到这一点,有什么建议吗?

您需要添加到数组中,而不仅仅是重写它:

$r_refcats = mysqli_query($global_dbh,"select distinct(cat) from reference");
while(($row = mysqli_fetch_array($r_refcats)) != false) {
    ${$row[0]}=array();
}
$r_references = mysqli_query($global_dbh,"select cat,id,description from reference");
while(($row = mysqli_fetch_array($r_references)) != false) {
    ${$row[0]}[] = $row;
}

另外,我认为您只想使用$row作为您的数组,而不是$row的数组。换句话说,我认为您希望数据是$row中的数据,而不是array(0=>$row)中的数据——因此我编辑到最后一行。

array_push()怎么样,它应该像对待[]:一样对待它

while(($row = mysqli_fetch_array($r_references)) != false) {
    //$$row[0]=array($row)
    array_push($$row[0],array($row));
}