如何调用PHP动态变量名?

时间:2016-05-16 07:00:50

标签: php

我在SQL服务器上有24个数据。当我的网页启动时,它会从服务器一次拉出所有这些数据并显示它。看起来像这样:

$sql = "SELECT `$dateName` FROM `$user` WHERE hour=2";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
     while ($row = $result->fetch_assoc()) {
         $hour2 = $row[$dateName];
     }
}
$sql = "SELECT `$dateName` FROM `$user` WHERE hour=3";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
     while($row = $result->fetch_assoc()) {
         $hour3 = $row[$dateName];
     }
}

等......直到24小时。

但我觉得for循环更好。像这样:

for ($x = 1; $x <= 24; $x++) {

    $sql = "SELECT `$dateName` FROM `$user` WHERE hour=`$x`";
    $result = $conn->query($sql);

    if ($result->num_rows > 0) {
         while($row = $result->fetch_assoc()) {
             $hour.$x = $row[$dateName];
         }
    }                          
}

我想拨打$ hour1,$ hour2,$ hour3。通过添加$ x到$小时。我该怎么做呢?非常感谢你!

5 个答案:

答案 0 :(得分:3)

我建议创建$ hours的数组,而不是生成动态变量。

$hour = array();
for ($x = 1; $x <= 24; $x++) {

    $sql = "SELECT `$dateName` FROM `$user` WHERE hour=`$x`";
    $result = $conn->query($sql);


    if ($result->num_rows > 0) {
         while($row = $result->fetch_assoc()) {
             $hour[$x][] = $row[$dateName];
         }
    }
 }

这样你就可以访问$ hour [1],$ hour [2] ......等......

答案 1 :(得分:2)

将它们包装到${'hour'.$x} = $row[$dateName]

答案 2 :(得分:1)

您可以使用Variable variables执行此操作:

${"hour" . $x} = $row[$dateName];

答案 3 :(得分:1)

您可以创建$ hour作为数组,使用$ x作为键并为键设置适当的值。

EG:

$hours = array();

for ($x = 1; $x <= 24; $x++) {

    $sql = "SELECT `$dateName` FROM `$user` WHERE hour=`$x`";
    $result = $conn->query($sql);

    if ($result->num_rows > 0) {
         while($row = $result->fetch_assoc()) {
             $hour[$x] = $row[$dateName];
         }
    }
}

echo $hour[1];

注意:

您应该考虑使用一种更有效的方法,在这种情况下,您不必每小时24次连接数据库。

EG:

$sql = "SELECT `$dateName` FROM `$user` ORDER BY hour ASC";

这将在一个查询中返回所有24行,然后您可以使用PHP操作数据。

答案 4 :(得分:1)

&#13;
&#13;
function pullRequest($dateName,$user,$x){
    //Define $conn here
    $sql = "SELECT `$dateName` FROM `$user` WHERE hour=`$x`";
    $result = $conn->query($sql);
    $hour = array();
    if ($result->num_rows > 0) {
         while($row = $result->fetch_assoc()) {
             $hour[$x] = $row[$dateName];
         }
    }
    return $hour[$x];

} 

Then you can call it like this
$dateName ="DATENAME";
$user="USER";
 for ($x = 1; $x <= 24; $x++) {
    pullRequest($dateName,$user,$x);
 }
&#13;
&#13;
&#13;