2013-10-14 23 views
1

我不確定這個問題的標題是否是我需要做的準確描述,但我會繼續問問題並查看大家的想法。將未定義的索引轉換爲空值在PHP中

基本上,我從一個我無法控制的源接收數據,並且我需要將它轉換爲合適的格式,以便使用CakePHP插入到我的數據庫中。所以,這裏是我如何做它:

public function submitApp($data) { 
    $array = array(
     'Student' => array(
      'name' => $data['name'], 
      'email' => $data['email'], 
      'phone' => $data['phone'], 
      'address' => $data['address'], 
      'dob' => $data['dob'], 
      'gender' => $data['gender'] 

     ), 
     'Application' => array(
      'course_id' => $data['course_id'], 
      'question1' => $data['question1'], 
      'question2' => $data['question2'], 
      'question3' => $data['question3'], 
      'question4' => $data['question4'], 
     ), 
     'ApplicationQualification' => $data['Qualifications'] 
    ); 

    // Logic to save $array goes here 
} 

的問題是,有時在$數據的關鍵不是所有將被提交給我的應用程序,但我還是希望我的應用程序與它得到工作。

我知道我可以在條件類似這樣的包裝每個鍵:

if (!isset($data['name'])) { $data['name'] = null; } 

...然後構建陣列,但是這似乎是做的非常笨拙的方法。有沒有更有效的方法來做到這一點?

回答

2

你可以使用一個簡單的三元聲明

'name' => array_key_exists('name', $data) ? $data['name'] : null 

或者,你可以設置一個默認的數組,然後在

$defaults = [ 
    'name' => null, 
    'email' => null, 
    // etc 
    ]; 

$data = array_merge($defaults, $data); 
合併給定值