我有一个包含大量字段和记录的表(40 +字段)。
我使用我的MySQL结果:
<?php
$field1 = $row['field1'];
$field2 = $row['field2'];
$field3 = $row['field3'];
?>
如您所见,变量名称与字段名称相同。
如何为所有字段执行此操作,而无需全部输入em?当我添加更多字段时真的很棒!
我知道eval
函数,但在这种情况下我不确定如何使用它。
另外,如何生成包含结果的数组?像这样:
<?php
$arr = array(
'field1'=>$row['field1']
);
?>
答案 0 :(得分:4)
extract()
函数正是这样做的:
extract($row);
默认情况下,它会覆盖任何现有变量(例如,如果您已经有field1
变量,它将覆盖它)。您可以通过将EXTR_SKIP作为第二个参数传递来禁用它:
extract($row, EXTR_SKIP);
或者您可以为所有变量添加前缀:
extract($riw, EXTR_PREFIX_ALL, 'row');
答案 1 :(得分:4)
您可以使用extract():
extract($row);
但是,请注意不要使用此功能污染您的命名空间。假设您已经有一个名为$car
的变量,并且数据库中有一个名为car
的字段。你可能会在不知不觉中覆盖现有的变量!
然后,使用可能更安全:
extract($row, EXTR_SKIP); // don't extract variables that already exist in the namespace
编辑:关于编辑,您无需为结果创建数组...您的$ row数组 结果。如果你在编辑$arr['field1'] = $row['field1']
中构建数组,那么为什么不完全绕过这个数组的构造而只使用原始的$row
?
答案 2 :(得分:2)
另外,如何生成包含结果的数组?
$arr = $row;