我想创建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';
现在,显然有更简单的方法为每个查询创建单独的数组,并且我已将我的代码修改为更懒惰/更简单的版本。但是,我仍然很好奇如何将键值对分配给双美元符号变量。
任何帮助将不胜感激!我现在有简单的代码,但是想要实现这个新代码更加动态,并且可以根据需要进行更多查询而不会有麻烦。
谢谢!
约什
答案 0 :(得分:1)
在这一行:
$name = array();
你正在覆盖$name
。你可能想写信给$$name
:
$$name = array();
答案 1 :(得分:1)
${$name}[$key]
但我不喜欢创建'unknown'变量,就像名称不在代码中的变量一样......如果名称是'key','db','_ GET','compQuery'等怎么办?一切都崩溃了......