【发布时间】:2019-04-06 20:50:03
【问题描述】:
我有一个用户可以搜索的包含多个字段的表单。如何根据用户选择的字段动态编写if条件?
例如我有3个字段如下:
$categoryId = $_REQUEST['category_id'];
$locationId = $_REQUEST['location_id'];
$statusId = $_REQUEST['status_id'];
如果用户选择了 category_id 和 location_id 和 status_id 那么我的 if 语句应该如下:
if (!empty($categoryId) && !empty($locationId) && !empty($statusId)) {
if (isInTaxonomy($recordId, $categoryId) && isInTaxonomy($recordId, $locationId) && isInTaxonomy($recordId, $statusId) {
// Do something
}
}
如果用户选择了 category_id 和 location_id,那么我的 if statmeent 如下:
if (!empty($categoryId) && !empty($locationId)) {
if (isInTaxonomy($recordId, $categoryId) && isInTaxonomy($recordId, $locationId) {
// Do something
}
}
如果用户只选择了 category_id,那么我的 if statmeent 如下:
if (!empty($categoryId)) {
if (isInTaxonomy($recordId, $categoryId)) {
// Do something
}
}
如您所见,我必须实现用户可以选择的所有可能的字段组合来构建所有不同的条件。
我正在考虑执行以下操作,但这只是给我一个字符串,我不想使用 eval 来执行它:
$filter = [(!empty($categoryId) ? '(isInTaxonomy($recordId, $categoryId))' : ''),
(!empty($locationId) ? '(isInTaxonomy($recordId, $locationId))' : '')];
$condition = implode(' && ', array_filter($filter));
if (eval("return $condition;")) {
// Do something
}
有没有一种方法可以使用更简洁的代码动态生成所有条件,而不必求助于 Eval?
【问题讨论】:
标签: php if-statement