1

我不确定这个问题的标题是否一定是对我需要做的事情的准确描述,但我会继续问我的问题,看看大家的想法......

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

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

4

1 回答 1

2

你可以使用一个简单的三元语句

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

或者,您可以设置一个默认数组,然后将给定的值合并到

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

$data = array_merge($defaults, $data);
于 2013-10-14T03:36:23.150 回答