我目前正在使用以下代码获取变量,并想知道转换为数组的最佳方法。这样做的主要优点是美观,还是有性能/效率方面?
if (isset($_GET["cmd"]))
$cmd = $_GET["cmd"];
else
die("Invalid URL");
if (isset($_GET["username"]))
{ $username = $_GET["username"];}
if (isset($_GET["firstname"]))
{ $firstname = $_GET["firstname"];}
if (isset($_GET["lastname"]))
{ $lastname = $_GET["lastname"];}
if (isset($_GET["street1"]))
{ $street1 = $_GET["street1"];}
if (isset($_GET["city1"]))
{ $city1 = $_GET["city1"];}
if (isset($_GET["postcode1"]))
{ $postcode1 = $_GET["postcode1"];}
if (isset($_GET["street2"]))
{ $street2 = $_GET["street2"];}
if (isset($_GET["city2"]))
{ $city2 = $_GET["city2"];}
if (isset($_GET["postcode2"]))
{ $postcode2 = $_GET["postcode2"];}
if (isset($_GET["phone"]))
{ $phone = $_GET["phone"];}
if (isset($_GET["mobilephone"]))
{ $mobilephone = $_GET["mobilephone"];}
if (isset($_GET["fax"]))
{ $fax = $_GET["fax"];}
if (isset($_GET["email"]))
{ $email = $_GET["email"];}
if (isset($_GET["website"]))
{ $website = $_GET["website"];}
if (isset($_GET["bank"]))
{ $bank = $_GET["bank"];}
if (isset($_GET["banknumber"]))
{ $banknumber = $_GET["banknumber"];}
if (isset($_GET["accountnumber"]))
{ $accountnumber = $_GET["accountnumber"];}
if (isset($_GET["subcat"]))
{ $subcat = $_GET["subcat"];}
答案 0 :(得分:3)
基本上,如果你像上面那样重复,那么通常会有一种更好的做事方式。如果你有一个收集数据,就像你看到的一样,通常最好将它保存在一个数组中。
如果从表单中获取它,您可以使用以下命令将其实际放入表单中的数组中:
<input type="text" name="details[username]" />
<input type="text" name="details[first_name]" />
etc.
您将以$ _GET ['details']的形式获得结果,可以通过使用
进行迭代foreach ($_GET['details'] as $field_name=>$value)
{
echo "<p>{$field_name} = {$value}</p>";
}
哪个应显示表单中输入的所有数据的值。您在循环中处理它的代码取决于您。例如,您可以在foreach中构建一个SQL语句,该语句将在提交时编写 - 只需注意SQL注入和用户添加字段。
答案 1 :(得分:2)
你可以使用extract,但不要,除非你要小心。
来自doc:
将数组中的变量导入 当前的符号表。
检查每个键是否有 有效的变量名称。它也检查 与现有变量发生冲突 在符号表中。
但要注意:
不要在不受信任的情况下使用extract() 数据,如用户输入(
$_GET
,...)。如果 例如,如果你愿意的话 运行依赖的旧代码 暂时register_globals
,制作 确定你使用其中一个 非重写extract_type值 例如EXTR_SKIP
并注意到这一点 你应该以相同的顺序提取 在variables_order
中定义 在php.ini中。
答案 2 :(得分:1)
将数组中的默认值分组:
$default = array(
'email' => '',
'name' => NULL,
//...
);
然后合并你的表并在变量中提取结果:
extract( array_merge( $default, $_GET ), EXTR_PREFIX_SAME, 'param' );
// here already existing variable names will be prefixed with 'param_'
必要时使用empty()
测试:
if( empty( $name ) )
die( "You must specify the name." );
答案 3 :(得分:0)
不确定这个问题。 $ _GET是一个数组。