如果我想重新填充一個帶有$ _POST值的表單(這個問題還有其他應用程序,但這是最簡單的),我必須經常檢查$ _POST索引是否已設置,然後才能使用它的值,或者我會從PHP獲得通知。
例如:
echo '<input type="text" name="somefield" value="';
if(isset($_POST['somefield']))
{ echo $_POST['somefield']; }
echo '">';
有了複雜的形式,這似乎繁瑣,想了很多重複的。所以我想,我們提取功能:
function varcheck_isset($vartocheck)
{
if(isset($vartocheck))
{return $vartocheck;}
else
{return '';}
}
,然後做
echo '<input type="text" name="somefield" value="';
echo varcheck_isset($_POST['somefield']);
echo '">';
使代碼更好。
但是,當我做到這一點,$ _ POST [ 'somefield']沒有設置,它說
注意:未定義指數:somefield
:-(
任何人有一個想法或建議如何使這項工作?
編輯:
這裏就是我終於實現了 - 我接受Organgepill的答案,只是修改了它稍微:
function arraycheck_isset($arraytocheck, $indextocheck)
{
if(isset($arraytocheck) && is_array($arraytocheck) && array_key_exists($indextocheck, $arraytocheck))
{ return $arraytocheck[$vartocheck];}
else
{ return '';}
}
下面的評論通過elclanrs也是相當不錯的。只寫:
echo $_POST['field'] ?: '';
個人而言,我喜歡非簡寫版,雖然比較好,因爲我也可能有情況下,我需要檢查的其他東西,除了isset()函數 - 例如一個正則表達式。這種方式每次都通過函數來保持一致。
在現代的PHP中,你可以這樣做:echo $ _POST ['field']?''' – elclanrs
@elclanrs這是一個很好的建議,謝謝!爲什麼不把它作爲答案? – olli