从数据库创建动态PHP变量

时间:2017-08-23 11:20:38

标签: php codeigniter variables dynamic morris.js

我有一系列名称,我想将其转换为变量。这些是从数据库生成的测试的名称(因此,如果添加新测试,将新的索引添加到数组中),我们的测试会定期更新,因此我不想对我的变量进行硬编码,我想动态生成它们。

我已尝试过此代码:

$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);

这给了我: enter image description here

但是我试着从我们的数据库中动态填充它,这样如果添加了新的测试/结果集,我就不必进入并手动更新代码了。这给了我数据但没有值为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(最新发布)干杯

2 个答案:

答案 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