1 回答

TA貢獻(xiàn)1827條經(jīng)驗 獲得超4個贊
回答我自己的問題,以便任何像您這樣偶然發(fā)現(xiàn)這篇文章的未來訪問者都可以學(xué)習(xí)到這個問題的簡單化解決方案。
$filters = array(
"filter_type_pc" => "My SQL query",
"filter_type_mac" => "My SQL query",
"filter_type_linux" => "My SQL query"
);
if (!empty($_POST)) {
$arrayMatch = array_intersect_key($_POST, $filters);
foreach(array_keys($arrayMatch) as $filterName) {
$newFilter = $filters[$filterName];
}
} else {
$newFilter = "ORDER BY time_altered DESC";
};
讓我們來分解一下:
首先,我們檢查請求是否為空,因為我們無法知道使用PHP在DOM中單擊了哪個過濾器按鈕,因此我們將其留空。
$_POST
因為我們檢查了整個超級全局變量,所以它會在請求中采取任何東西,如果你有幾個請求,我們通過以下方式解決這個問題:
$_POST
使用匹配鍵和數(shù)組。
array_intersect_key
$_POST
$filters
創(chuàng)建一個僅包含匹配結(jié)果的新數(shù)組。
$arrayMatch
然后,我們用 和 遍歷新創(chuàng)建的數(shù)組的匹配鍵,然后將鍵命名為 。
foreach()
array_keys()
$filterName
最后,我們可以通過使用新變量將數(shù)組的值定義為數(shù)組的值來獲得數(shù)組的值。
$newFilter
$filters
$filterName
編輯:
我想出了一個比上面更好的解決方案,而上面的解決方案按預(yù)期工作 - 它可能會與前面提到的未來實現(xiàn)發(fā)生沖突。這將解決此問題,并且僅檢查包含數(shù)組中鍵的請求。POST
$filters = array(
"filter_type_pc" => "My SQL query",
"filter_type_mac" => "My SQL query",
"filter_type_linux" => "My SQL query"
);
$newFilter = "ORDER BY time_altered DESC";
$arrayMatch = array_intersect_key($_POST, $filters);
foreach(array_keys($arrayMatch) as $filterName) {
if (isset($_POST[$filterName])) {
$newFilter = $filters[$filterName];
}
};
- 1 回答
- 0 關(guān)注
- 119 瀏覽
添加回答
舉報