2015-05-12 49 views
0

我有這樣的代碼:

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給定的指標沒有設置,該索引是一個更好的辦法...

感謝

+2

你可以做一個'foreach()'循環。 – Rasclatt

+2

'$ t ['prenom2'] = isset($ _ POST ['prenom2'])? $ _POST ['prenom2']:'';'?使用三元操作,每個'if()'可以在1行中完成。 – Sean

回答

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); 
1

如果你不想使用if..else..條件,那麼你可以使用三元:運算符作爲

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

您可以使用foreach。

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

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

print_r($t); 
1

基本上與從馬太答案,但移動的功能,以減少重複的代碼。 參數$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');