【发布时间】:2017-08-23 20:34:37
【问题描述】:
我有一个名称数组,我想将它们转换为变量。这些是从数据库生成的测试的名称(因此,如果添加新测试,则会将新索引添加到数组中),我们的测试会定期更新,所以我不想硬编码我的变量,我想要动态生成它们。
我试过这段代码:
$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);
但是我试图从我们的数据库中动态填充它,这样如果添加了新的测试/结果集,我就不必进入并手动更新代码,这给了我数据但没有值,因为我不确定如何根据数据动态创建变量: /* 创建动态变量:*/
$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(最新版本)干杯
【问题讨论】:
-
这是你的实际代码还是伪代码?
-
这是我尝试过的代码,到目前为止,我发现的所有代码大部分时间都是手动编码的
-
你肯定需要这些单独的变量吗?你不能只使用关联数组 (
$data[$v] = x;) 吗?
标签: php codeigniter variables dynamic morris.js