PHP——一种简单的方法?

PHP——一种简单的方法?,php,Php,我是php新手。我必须重复50次,所以我希望有一个简单的方法。 有没有一个简单的方法可以做到这一点 <?php if (isset($_POST['Arbejdsmiljoudvalget'])){ $Arbejdsmiljoudvalget = $_POST['Arbejdsmiljoudvalget']; } else { $Arbejdsmiljoudvalget =0; } if (isset($_POST['Boligpolitisk'])){ $Bo

我是php新手。我必须重复50次,所以我希望有一个简单的方法。 有没有一个简单的方法可以做到这一点

<?php 

if (isset($_POST['Arbejdsmiljoudvalget'])){
    $Arbejdsmiljoudvalget = $_POST['Arbejdsmiljoudvalget'];
} else {
    $Arbejdsmiljoudvalget =0;
}
if (isset($_POST['Boligpolitisk'])){
    $Boligpolitisk = $_POST['Boligpolitisk'];
} else {
    $Boligpolitisk =0;
}

if (isset($_POST['Dove'])){
    $Dove = $_POST['Dove'];
} else {
    $Dove =0;
}

if (isset($_POST['Energi'])){
    $Energi = $_POST['Energi'];
} else {
    $Energi =0;
}

?>

这将循环每个已发布的值,并检查
isset()
,否则将给它一个值0。 然后使用发布的值,如:

print "Thank you {$values['Name']} for submitting the form.<br/>" . PHP_EOL;
print "Your energy consumption {$values['Energi']}<br/>" . PHP_EOL;
print“感谢{$values['Name']}提交表单。
”。PHP_EOL; 打印“您的能源消耗{$values['Energi']}
”。PHP_EOL;
HankyPanky解决方案不错,但您需要的是一个构造:

一些人建议在
$\u POST
数组上执行
extract()
,但这是不安全的,因为它允许重写任何内部变量。直接在
$\u POST
数组上循环也是如此,但出于同样的原因,这也是错误的。在提取之前,您必须从
$\u POST
中筛选出除白名单变量以外的任何变量,或者创建一个这样的白名单并循环:

<?php 
    $dict = array(
        'Arbejdsmiljoudvalget',
        'Boligpolitisk',
        'Dove',
        'Energi',
        // ...
    );


foreach ($dict as $term) {
    if (isset($_POST[$term])){
        ${$term} = $_POST[$term];
        continue;
    }
    ${$term} = 0;
}

$$param
中的额外美元创建了一个名为
$param
的变量。 例如,这与执行以下操作相同:

$Arbejdsmiljoudvalget = 'somevalue';

由于您在运行任何脚本之前都知道post变量的所有名称,因此可以创建以下名称的数组:

$names = [
     'Arbejdsmiljoudvalget',
     'Boligpolitisk',
     ...
];
然后循环该数组并检查该名称是否在POST数组中:

foreach ($names as $name) {
    ${$name} = isset($_POST[$name]) ? $_POST[$name] : 0;
}

但我认为有很多变量是个坏主意。最好将它们添加到数组中,而不是像这样使用$values['Arbejdsmiljoudvalget']

您的意思是必须将整个代码重复50次,或者必须将if-else条件应用于50个不同的变量?isset($\u POST['Arbejdsmiljoudvalget'])?$Arbejdsmiljoudvalget=$\u POST['Arbejdsmiljoudvalget']:$arbejdsmildvalget=0;echo$Arbejdsmiljoudvalget;是的,有更简洁的方法,但它也有味道。我会把默认值放在一个散列中。创建一个函数来实现它。在需要itTry extract($\u POST)的不同位置调用函数;虽然这看起来很简单,但这不好,因为它允许重写任何变量。我只需提交
isAdmin
作为一个后var,它可以破坏一切。这是真的,不建议在生产环境中使用它。确定数组中的已发布值,然后对该数组使用foreach会更安全,就像您刚才建议的那样。不过,您可以先从
$\u POST
中筛选出除可行变量以外的任何变量,然后进行循环,如果您需要对每个变量进行不同的初始化,您可以在dict中输入一个键值。如果某些变量需要的不是
0
,我的意思是,这个变量做到了。:-)谢谢
$Arbejdsmiljoudvalget = 'somevalue';
$names = [
     'Arbejdsmiljoudvalget',
     'Boligpolitisk',
     ...
];
foreach ($names as $name) {
    ${$name} = isset($_POST[$name]) ? $_POST[$name] : 0;
}