Лучший способ увидеть, если переменная isset php - PullRequest
1 голос
/ 14 августа 2011

Привет, мне просто интересно, есть ли лучший способ сделать что-то вроде этого:

$openid = $_SESSION['openiduserdata'];
if (isset($openid['namePerson/friendly']))
    {$username = $openid['namePerson/friendly'];}
if (isset($openid['namePerson/first']))
    {$firstname = $openid['namePerson/first'];}
if (isset($openid['namePerson/last']))
    {$lastname = $openid['namePerson/last'];}
if (isset($openid['birthDate']))
    {$birth = $openid['birthDate'];}
if (isset($openid['contact/postalCode/home']))
    {$postcode = $openid['contact/postalCode/home'];}
if (isset($openid['contact/country/home']))
    {$country = $openid['contact/country/home'];}
if (isset($openid['contact/email']))
    {$email = $openid['contact/email'];}

Ответы [ 5 ]

5 голосов
/ 14 августа 2011
$variables = array('openid' => 'openiduserdata', 'username' => 'namePerson/friendly', 'firstname' => 'namePerson/first', 'lastname' => 'namePerson/last', 'birth' => 'birthDate', 'postcode' => 'contact/postalCode/home', 'country' => 'contact/country/home', 'email' => 'contact/email');

foreach ($variables as $name => $key)
  if (isset($openid[$key]))
    $$name = $openid[$key];
2 голосов
/ 14 августа 2011

Если ваша цель - избежать уведомлений PHP, просто добавьте к переменной массива @:

$username = @$openid['namePerson/friendly'];
1 голос
/ 29 сентября 2011

Если вы пытаетесь установить только те параметры, которые не заданы в массиве, по умолчанию, одним из решений будет создание массива, содержащего все значения по умолчанию, а затем объединение входящего массива с массивом по умолчанию.

<?php    
$defaults = array('name' => 'Anonymous','gender' => 'n/a');
$data = array_merge($defaults, $_POST);
// now data includes all the post parameters, however, those parameters that don't exist will be the default value in $data
0 голосов
/ 04 октября 2011
$openid = array_merge(
   array('namePerson/friendly' => NULL,   // Or an empty string if you prefer.
         'namePerson/first'    => NULL,
         'namePerson/last'     => NULL),  // etc.
   $_SESSION['openiduserdata']);

// Now you know that the keys are set.
// Then if you really need them separate:
$username = openid['namePerson/friendly'];
$firstname = openid['namePerson/first'];
$lastname = openid['namePerson/last'];
// etc.
0 голосов
/ 04 октября 2011

Попробуйте создать функцию так:

function get_value_or_default($array, $key, $default = null)
{
    if (array_key_exists($key, $array))
    {
        return $array[$key];
    }
    else
    {
        return $default;
    }
}

$username = get_value_or_default($openid, 'namePerson/friendly');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...