$ _POST更好的写作质量

时间:2015-05-12 05:37:39

标签: php post

我有这段代码:

if(isset($_POST['prenom2'])){
    $t['prenom2'] = $_POST['prenom2'];
}else{
    $t['prenom2'] = '';
}

if(isset($_POST['nom2'])){
    $t['nom2'] = $_POST['nom2'];
}else{
    $t['nom2'] = '';
}

if(isset($_POST['prenom3'])){
    $t['prenom3'] = $_POST['prenom3'];
}else{
    $t['prenom3'] = '';
}

等(我需要测试5或6个字段)。

必须有更好的方法来做到这一点,比如如果没有设定给定的POST索引,该索引是......

由于

4 个答案:

答案 0 :(得分:5)

你可以使用foreach。

$indexes = array('prenom2', 'nom2', ...);
$t = array();

foreach ($indexes as $i) {
    $t[$i] = isset($_POST[$i]) ? $_POST[$i] : '';
}

print_r($t);

答案 1 :(得分:1)

如果您不想使用if..else..条件,则可以使用三元:运算符

$t['prenom2'] = (isset($_POST['prenom2'])) ? $_POST['prenom2'] : '';
$t['nom2'] = (isset($_POST['nom2'])) ? $_POST['nom2'] : '';

答案 2 :(得分:1)

基本上与Matei的答案相同,但在函数中移动以减少重复代码。 参数$t是您的最终数组,$key是表示数组索引的字符串。最后的$t数组也会返回,因此无需传递引用。

function setT($t, $key)
{
  $t[$key] = isset($_POST[$key]) ? $_POST[$key] : '';
  return $t;
}

$t = setT($t, 'prenom1');
$t = setT($t, 'prenom2');
$t = setT($t, 'prenom3');

答案 3 :(得分:0)

根据您的实际问题,您可以选择其中一种:

 for($i=1; $i<6; $i++){
     $t['prenom'.$i] = (isset($_POST['prenom'.$i])) ? $_POST['prenom'.$i] : '';
     $t['nom'.$i] = (isset($_POST['nom'.$i])) ? $_POST['nom'.$i] : ''; 
 }        

 $indexes = array('prenom2'=>'', 'nom2'=>'', ...);
 $t = array_merge($indexes,$_POST);