我正在构建一个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));
}