PHP - 一种简单的方法吗?

时间:2014-12-15 09:19:14

标签: php

我是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;
}

?>

4 个答案:

答案 0 :(得分:5)

由于在运行任何脚本之前就知道了所有后期变量的名称,因此可以创建这些名称的数组:

$names = [
     'Arbejdsmiljoudvalget',
     'Boligpolitisk',
     ...
];

比循环该数组并检查该名称是否在POST数组中:

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

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

那样使用

答案 1 :(得分:4)

HankyPanky解决方案很不错,但您要求的是foreach构造:

有人建议在extract()数组上执行$_POST,但这是不安全的,因为允许覆盖任何内部变量。同样可以直接循环遍历$_POST数组,但出于同样的原因,这也是错误的。在提取之前,您必须在$_POST之前过滤除了列入白名单的变量之外的所有内容,要么具有这样的白名单并循环播放它:

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


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

请注意,提取POST数据的方法比手动更好。

答案 2 :(得分:2)

<?php
foreach ( $_POST as $key => $value ) {
    if ( isset($value) ) {
        ${$key} = $value;
    }
    else {
        ${$key} = 0;
    }
}
?>

编辑:

要使我的原始建议使用Justinas注意使用$values数组而不是仅创建50个变量(也不会允许覆盖其他变量,如$isAdmin或其他变量(如Sergey Telshevsky评论到我的第一个建议))。 此外,您不必确定字典中的每个值并循环$dict数组,所以这是一个示例:

foreach ( $_POST as $key => $value ) {
    $values[$key] = ( isset($value) ? $value : 0 );
}

这将循环每个发布的值并检查是否isset(),否则将为其赋值0。 然后使用发布的值,如:

print "Thank you {$values['Name']} for submitting the form.<br/>" . PHP_EOL;
print "Your energy consumption {$values['Energi']}<br/>" . PHP_EOL;

答案 3 :(得分:1)

$list = array( 'Arbejdsmiljoudvalget', 'Boligpolitisk' );
foreach( $list as $param ){
     if( isset( $_POST[ $param ] ) ){
         $$param = $_POST[ $param ];
         continue;
     }
     $$param = 0;
}

$$param中的额外美元会创建一个名称存储在$param中的变量。 例如,它与做:

相同
$Arbejdsmiljoudvalget = 'somevalue';