【问题标题】:create dynamic PHP variables from a database从数据库创建动态 PHP 变量
【发布时间】: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


【解决方案1】:

如果你使用 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';

【讨论】:

    【解决方案2】:

    双美元呢? 你可以在这里阅读它 http://php.net/manual/en/language.variables.variable.php

    【讨论】:

    • 谢谢,刚刚尝试了双 $,仍然没有值,我用代码更新我的问题 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-22
    • 2014-03-03
    • 2017-08-05
    • 1970-01-01
    • 2014-05-27
    • 1970-01-01
    • 2020-05-11
    相关资源
    最近更新 更多