我的Php函数循环通过mysql表,对于每一行,它将行名设置为$ var,行值设置为$ val。
foreach($row as $var => $val) {...
现在我想将收到的rowname($ var)设置为新变量。
这个例子不对,但要解释我的想法; $ name $ var = $ val
如果$ var将是= rowname1 然后新变量将是$ rowname1 = value1
任何想法如何实现这一目标?
感谢。
答案 0 :(得分:2)
您可以使用variable variables执行此操作:
foreach(...) {
$$var = $val;
}
但更清洁的是使用数组:
foreach(...) {
$var_names[] = array($var => $val);
}
答案 1 :(得分:0)
<?php
$array = array(
'go' => 'something1',
'go2' => 'something2',
'go3' => 'something3',
'go4' => 'something4',
'go5' => 'something5',
);
foreach ($array as $key => $val) {
${$key} = $val;
}
print $go;
?>
<强> EXAMPLE
强>
或者您可以使用此处说明的$$
方式:
Read more about Variable Variables...
答案 2 :(得分:0)
您可以像${$var} = $val
一样使用它。卷曲括号只是为了方便和可读性。 $$var = $val
也应该有效。
答案 3 :(得分:0)
您可以使用字符串动态创建具有动态名称的变量! documentation provided here
支持此功能一个简单的例子:
// This now holds the string hello
$variableName = 'hello';
// This creates the variable 'hello' and contains the value test
$$variableName = "test";
echo $hello;
完成上面的示例后,您将能够使用键+值字符串创建变量名称,如下所示:
$count = 1;
foreach($row as $var => $val)
{
$varName = $var.$count;
$$varName = $val;
$count++;
}
这将创建column_name1,column_name2等。
我觉得有必要增加一些自由裁量权,因为这不是常见或最佳做法。处理此信息的最佳方法是使用$ key =&gt; $ val对并将其存储到单独的变量中或通过它们进行解析。通过这样做,你基本上抛弃了使用数组的所有易用性。
另外,旁注:
您也可以通过这种方式动态调用方法。
function test()
{
echo "test yar";
}
$method = "test";
$method();