这个应该很容易,这让我感到害怕,我无法找到解决方案!
我有一个SQL查询从数据库返回记录。我使用的两个字段是$ row [“staff_id”]和$ row [“name”]。
由此我想构建一个动态变量,如:
$staffid_1 = "Mark Smith";
$staffid_2 = "Sally Baker";
$staffid_3 = "Peter Pan";
动态创建varibale名称是为第一部分组合“staffid_”和$ row [“staff_id”],然后为名称$ row [“name”]组合。
我试过了:
${$staff_id . $row["staff_id"]} = $row["name"];
echo ${$staff_id . $row["staff_id"]} . "<br>";
但没有运气!任何帮助将不胜感激:)
答案 0 :(得分:0)
我认为你可能最好更改你的查询以返回它的第一部分,然后你要调用它来连接它,例如
查询:
SELECT '$staffid_' + ltrim(rtrim(cast(staff_id as varchar))) + ' = "' + name + '"'
FROM [table list]
ORDER BY ...
然后根据需要连接结果集的各行,并在您看来需要之间插入。
答案 1 :(得分:0)
好的,在PHP中你有一个很棒的选项来使用double leveled变量,这基本上意味着:
$$varname = $value;
这导致如果你有一个字符串变量,
(例如$staffid = "staffid_1"
)您可以执行以下操作:
$staffid = "Jasonbourne";
$$staffid = "Matt Damon";
// Will result in
$JasonBourne = "Matt Damon";
所以对你的例子来说:
$name = "staffid_" . $row["staff_id"];
$$name = $row["name"];
将导致变量:$staff_id_1 = "Mark Smith";
要阅读有关双级变量的更多信息: http://php.net/manual/en/language.variables.variable.php
编辑:如果你想循环遍历行:
foreach ($sql_result as $row) {
$name = "staffid_" . $row["staff_id"];
$$name = $row["name"];
}