下面是一個示例PHP遞歸函數,用于動態構建查詢過濾器:
function buildFilter($filters) {
$filterStr = "";
foreach ($filters as $key => $value) {
if (is_array($value)) {
$filterStr .= "(" . buildFilter($value) . ")";
} else {
$filterStr .= "$key = '$value'";
}
if ($key !== array_key_last($filters)) {
$filterStr .= " AND ";
}
}
return $filterStr;
}
$filters = [
"name" => "John",
"age" => 25,
"or" => [
"city" => "New York",
"state" => "California"
]
];
$filter = buildFilter($filters);
echo $filter;
在這個示例中,我們定義了一個buildFilter
函數,該函數接受一個數組作為參數,并遞歸構建查詢過濾器。過濾器數組中的每個鍵值對表示一個過濾條件,如果值是一個數組,則表示多個條件之間是“或”關系。
通過調用buildFilter
函數,并傳入過濾器數組,我們可以動態構建查詢過濾器,并將其應用于查詢操作中。