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

时间:2013-12-13 20:25:32

标签: php arrays variables dynamic array-push

我正在构建一个具有相当大(10K行)参考表的Web应用程序。

表引用有一个类别,id,description。

因为我正在使用这个引用数据来填充下拉框等等,我正试图将它们放在数组中。我首先将它们放在一个大型数组中,但在我看来,在参考表中每个类别都有一个数组效率更高。

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

$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][],所以它会覆盖相同的值:)

有关如何正确执行此操作的任何提示?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分: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) - 因此我对最后一行进行了编辑。