PHP - 有一种简单的方法可以为多个变量设置$ _SESSION吗?

时间:2016-04-05 08:56:23

标签: php session

我需要为每个$_SESSION

定义以下代码
if(isset($_SESSION['profile_status']) OR isset($_SESSION['building_name']) OR isset($_SESSION['building_street']) OR isset($_SESSION['building_postcode']) OR isset($_SESSION['building_locality']) OR isset($_SESSION['building_country'])){
    $getProfileStatus = $_SESSION['profile_status'];
    $buildingNameSelected = $_SESSION['building_name'];
    $streetAddSelected = $_SESSION['building_street'];
    $postcodeAddSelected = $_SESSION['building_postcode'];
    $localityAddSelected = $_SESSION['building_locality'];
    $countryAddSelected = $_SESSION['building_country'];
    $vatNumber = $_SESSION['vat_number'];
    $businessWebsite = $_SESSION['business_website'];
    $businessEmail = $_SESSION['business_email'];
    $contactPerson = $_SESSION['contact_person'];
    $telephone1 = $_SESSION['telephone_1'];
    $telephone2 = $_SESSION['telephone_2'];
    $telephone3 = $_SESSION['telephone_3'];
    $telephone4 = $_SESSION['telephone_4'];
}

是否有更清洁/更好的方法为每个变量执行isset($_SESSION而不会出现任何错误。

我尝试使用foreach循环,但是我得到了没有定义变量的错误。

$sessionArrays = array(
    'profile_status' => array(
        'variable' => $getProfileStatus,
        'session' => 'profile_status',
        ),
    'building_name' => array(
        'variable' => $buildingNameSelected,
        'session' => 'building_name',
        ),
    'building_street' => array(
        'variable' => $streetAddSelected,
        'session' => 'building_street',
        ),
    'building_postcode' => array(
        'variable' => $postcodeAddSelected,
        'session' => 'building_postcode',
        ),
    'vat_number' => array(
        'variable' => $vatNumber,
        'session' => 'vat_number',
        ),
    'business_website' => array(
        'variable' => $businessWebsite,
        'session' => 'business_website',
        ),
    'business_email' => array(
        'variable' => $buildingNameSelected,
        'session' => 'business_email',
        ),
    'contact_person' => array(
        'variable' => $contactPerson,
        'session' => 'contact_person',
        ),
    'building_name' => array(
        'variable' => $buildingNameSelected,
        'session' => 'building_name',
        ),
    'telephone_1' => array(
        'variable' => $telephone1,
        'session' => 'telephone_1',
        ),
    'telephone_2' => array(
        'variable' => $telephone2,
        'session' => 'telephone_2',
        ),
    'telephone_3' => array(
        'variable' => $telephone3,
        'session' => 'telephone_3',
        ),
    'telephone_4' => array(
        'variable' => $telephone4,
        'session' => 'telephone_4',
        ),
    );

foreach ($sessionArrays as $sessionArray){
    if(isset($_SESSION[$sessionArray['session']])){
        $sessionArray['variable'] = $_SESSION[$sessionArray['session']];
    }else{
        $sessionArray['variable'] = null;
    }

1 个答案:

答案 0 :(得分:0)

您可以使用foreach并使用empty()代替isset()进行检查,然后您确定此值已设置且不为空。

$keys = [
    'profile_status', 
    'building_name', 
    'building_street', 
    'building_postcode', 
    'building_locality', 
    'building_country', 
    'vat_number', 
    'business_website', 
    'business_email', 
    'contact_person', 
    'telephone_1', 
    'telephone_2', 
    'telephone_3', 
    'telephone_4'
    ];

foreach ($keys as $key) {
    if (empty($_SESSION[$key])) {
        echo $key . ' is missing in session!';  
    }
}