【发布时间】:2013-12-08 15:07:28
【问题描述】:
我不知道该使用哪个,或者是否应该同时使用。我有一个发布数据数组,想先检查每个$_POST['data'] 是否为空,如果为空,则将变量 $data 设置为数据库中的某个值。如果它不为空,那么我想设置$data = $_POST['data']。
我知道我可以使用一系列 if 语句,但说真的,必须有更有效的方法。我考虑过切换$_POST[$key],但交换机是否知道我说的是$key,而不是$_POST?我将对此进行测试,但我想知道该领域的最佳实践是什么。
作为参考,我正在为我的公司制作一个更新员工数据的应用程序。如果用户填写表单区域,那么我希望新数据进入我的$update_data 数组,但如果用户将表单区域留空,我希望将这些输入设置为当前值,因此它们不会从数据库中删除。
-- 编辑--
所以我才意识到使用 switch 可能意味着更多的代码,因为无论如何我都必须编写 if 语句。 Foreach??
-- 编辑--
if (empty($_POST) === false && empty($errors) === true) {
if (empty($_POST['name']) === false) {
$staff_name = $_POST['name'];
} else {
$staff_name = staff_data($staff_id, 'name', $_POST['language']);
}
if (empty($_POST['title']) === false) {
$title = $_POST['title'];
} else {
$title = staff_data($staff_id, 'title', $_POST['language']);
}
if (empty($_POST['email']) === false) {
$email = $_POST['email'];
} else {
$email = staff_data($staff_id, 'email', $_POST['language']);
}
// ... You get it a lot of if statements one for each array key below:
$staff_data = array(
'name' => $staff_name,
'title' => $title,
'email' => $email,
'phone' => $phone,
'quote' => $quote,
'specialty' => $specialty,
'bio' => $bio,
'path' => $path,
'language_id' => $_POST['language']
);
if(staff_exists($staff_id, $_POST['language']) === true) {
change_staff($staff_id, $staff_data, $_POST['language']);
} else {
insert_staff($staff_id, $staff_data);
}
【问题讨论】:
-
我们可以查看您当前的代码吗?
-
是的,我刚刚发布了相关部分
标签: php post foreach switch-statement