PHP foreach将行名设置为新变量

时间:2013-11-16 02:18:11

标签: php mysql

我的Php函数循环通过mysql表,对于每一行,它将行名设置为$ var,行值设置为$ val。

foreach($row as $var => $val) {...

现在我想将收到的rowname($ var)设置为新变量。

这个例子不对,但要解释我的想法; $ name $ var = $ val

如果$ var将是= rowname1 然后新变量将是$ rowname1 = value1

任何想法如何实现这一目标?

感谢。

4 个答案:

答案 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();