双美元符号 - 分配数组键=>值

时间:2012-01-14 20:53:11

标签: php arrays dollar-sign

我想创建3个不同的数组,这些数组可以根据从某些mysql表中提取的字段而改变。

这是我的代码:

    // Gather db rows with query
    $compQuery['subCats'] = mysql_query("SELECT id,name,category FROM subcategories ORDER BY id DESC");
    $compQuery['cats'] =    mysql_query("SELECT id,name FROM categories ORDER BY id DESC");
    $compQuery['mans'] =    mysql_query("SELECT id,name,link FROM manufacturers ORDER BY id DESC");

    // Place rows into arrays
    foreach($compQuery as $name=>$query){

        $name = array();

        while($data = mysql_fetch_array($compQuery[$name])){
            foreach($data as $key=>$value){

                $$name[$key] = $value;                  

            }

        }

    }

我期望它产生的是3个数组:subCats,cats和mans,每个都有值对。它没有找到$$ name变量并为数组赋值[$ key] = $,而是从$$ name变量中取出一个字母,并将$ value赋值给这个新变量。

例如,如果$ name ='subCats',$ key ='3',value ='机器工具'

它将使用subCats中的第3个字母创建变量$ C:

$C = 'machine tools' 

它应该做的是创建:

$subCats[3] = 'machine tools';

现在,显然有更简单的方法为每个查询创建单独的数组,并且我已将我的代码修改为更懒惰/更简单的版本。但是,我仍然很好奇如何将键值对分配给双美元符号变量。

任何帮助将不胜感激!我现在有简单的代码,但是想要实现这个新代码更加动态,并且可以根据需要进行更多查询而不会有麻烦。

谢谢!

约什

2 个答案:

答案 0 :(得分:1)

在这一行:

$name = array();

你正在覆盖$name。你可能想写信给$$name

$$name = array();

答案 1 :(得分:1)

${$name}[$key]

但我不喜欢创建'unknown'变量,就像名称不在代码中的变量一样......如果名称是'key','db','_ GET','compQuery'等怎么办?一切都崩溃了......