我有一系列名称,我想将其转换为变量。这些是从数据库生成的测试的名称(因此,如果添加新测试,将新的索引添加到数组中),我们的测试会定期更新,因此我不想对我的变量进行硬编码,我想动态生成它们。
我已尝试过此代码:
$data = array();
foreach($tests as $v) {
$$v = ${};
array_push($data, $v);
}
我的目标是动态创建变量,然后为每个正在进行的测试实例添加变量,例如,如果有6个人进行过我们的即时测试,那么变量' instant'将有价值6.我是在正确的轨道?谢谢!
*****更新***** 我试图使用这些变量填充morris.js图表,一切都在硬编码时工作:
$pos = 0;
$neg = 0;
$pen = 0;
$cont = 0;
$misc = 0;
foreach ($data as $item) {
if ($item['result'] === 'Positive') {
$pos++;
} elseif ($item['result'] === 'Negative') {
$neg++;
} elseif ($item['result'] === 'Pending') {
$pen++;
} elseif ($item['result'] === 'Contact the Clinic') {
$cont++;
} else {
$misc++;
}
}
$res = array("Positive"=>$pos, "Negative"=>$neg, "Pending"=>$pen, "Contact the Clinic"=>$cont, "Misc"=>$misc);
$data = json_encode($res);
但是我试着从我们的数据库中动态填充它,这样如果添加了新的测试/结果集,我就不必进入并手动更新代码了。这给了我数据但没有值为im不确定如何根据数据动态创建变量: / *创建动态变量:* /
$vars = array();
foreach($tests as $k => $v) {
array_push($vars, $v);
$$v = extract($vars);
/* Loop through each instance and create a count for all matching instances */
foreach($data as $item){
if($item['name'] === $k){
${$v}++;
}
}
}
给我标签但没有价值:
{"Positive","Negative","Pending","Contact the Clinic","Misc"}
我目前正在使用Codeigniter(最新发布)干杯
答案 0 :(得分:0)
如果你使用mysqli,你可以这样做:
// your query stuff:
$stmt->query($query);
$data = $stmt->fetch_assoc();
// just for example data contains:
// array('id'=>1,'name'=>'Andy')
foreach($data as $field => $value) {
${$field} = $value;
}
// then output:
echo $name; // should output 'Andy';
答案 1 :(得分:0)
双倍美元怎么样? 你可以在这里阅读它 http://php.net/manual/en/language.variables.variable.php