我不确定这个问题的标题是否必须准确描述我需要做什么,但我会继续问我的问题,看看每个人的想法......
基本上,我从一个我无法控制的源接收数据,我需要将其转换为合适的格式,以便使用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; }
...然后构建数组,但这似乎是一种非常笨拙的方式。有没有更有效的方法来做到这一点?
答案 0 :(得分:2)
您可以使用简单的三元语句
'name' => array_key_exists('name', $data) ? $data['name'] : null
或者,您可以设置默认数组,然后合并
中的给定值$defaults = [
'name' => null,
'email' => null,
// etc
];
$data = array_merge($defaults, $data);