2013-10-14 17 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); 
合并给定值