PHP 将行名设置为新变量


PHP foreach set row name as new variable

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

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

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

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

如果$var将是 = 行名 1那么新变量将是 $rowname 1 = 值 1

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

谢谢。

您可以使用变量来执行此操作:

foreach(...) {
    $$var = $val;
}

但更干净的是使用数组:

foreach(...) {
    $var_names[] = array($var => $val);
}
<?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...

你可以

${$var} = $val一样使用它。大括号只是为了方便和可读性。 $$var = $val也应该有效。

您可以使用字符串动态创建具有动态名称的变量!此处提供的文档支持此功能

举个简单的例子:

// 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 => $val 对并将其存储到单独的变量中或通过它们进行解析。通过这样做,您基本上抛弃了使用数组的所有易用性。

另外,旁注:

您也可以通过这种方式动态调用方法。

function test()
{
    echo "test yar";
}
$method = "test";
$method();