定义默认数组值的最简单方法

Mav*_*ick 3 php arrays associative-array conventions ternary-operator

是否有更简洁的方法来检查数组值以防止PHP通知?目前我这样做:

$email      = (isset($_POST['user_email']))      ? $_POST['user_email']      : '';
$first_name = (isset($_POST['user_first_name'])) ? $_POST['user_first_name'] : '';
$last_name  = (isset($_POST['user_last_name']))  ? $_POST['user_last_namel'] : '';
$birthday   = (isset($_POST['user_last_name']))  ? $_POST['user_last_namel'] : '';
Run Code Online (Sandbox Code Playgroud)

有没有办法做像你只提供默认的JavaScript,像这样?

user.email = response.email || '';
Run Code Online (Sandbox Code Playgroud)

我不想压制通知,但这些丑陋的检查使我的代码混乱.我使用的是PHP 5.2.6.

web*_*ave 5

您可以创建一个功能:

$email      = getPost('user_email');
$first_name = getPost('user_first_name');
$last_name  = getPost('user_last_name');
$birthday   = getPost('user_birthday');


function getPost($key, $default = '')
{
    if (isset($_POST[$key])) {
        return $_POST[$key];
    }
    return $default;
}
Run Code Online (Sandbox Code Playgroud)

将它放在一个功能中也可以让你更容易地进行额外的消毒,例如trim(),如果需要的话.

您还可以传递将返回的默认值:

$flavor = getPost('flavor', 'vanilla'); // if $_POST['flavor'] is not set, 'vanilla' is returned
Run Code Online (Sandbox Code Playgroud)