在PHP中将未定义的索引转换为null

时间:2013-10-14 03:31:45

标签: php cakephp

我不确定这个问题的标题是否必须准确描述我需要做什么,但我会继续问我的问题,看看每个人的想法......

基本上,我从一个我无法控制的源接收数据,我需要将其转换为合适的格式,以便使用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
}

问题在于,有时不会将$ data中的所有键都提交给我的应用,但我仍然希望我的应用能够处理它所获得的内容。

我知道我可以像这样在条件中包装每个键:

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

...然后构建数组,但这似乎是一种非常笨拙的方式。有没有更有效的方法来做到这一点?

1 个答案:

答案 0 :(得分:2)

您可以使用简单的三元语句

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

或者,您可以设置默认数组,然后合并

中的给定值
$defaults = [
    'name' => null,
    'email' => null,
    // etc
    ];

$data = array_merge($defaults, $data);