2 回答

TA貢獻1946條經(jīng)驗 獲得超4個贊
# 即使estimateId 不是數(shù)組中的唯一項,這個if 仍然返回true?
# 估計/1001/
要解決您的問題,您可以檢查該值是否是唯一值
if(in_array($_GET["estimateId"], $_GET))
變成:
if(\count($_GET) === 1 && \in_array($_GET["estimateId"], $_GET) ){
/***
this will only trigger if `$_GET["estimateId"]` is in the
array $_GET and is the only value in the array.
***/
}
它檢查值并檢查count
數(shù)組中的值。因為您正在尋找這個值,所以數(shù)組計數(shù)應(yīng)該只有 1。
上面返回 true 因為 $_GET 只包含一個值。
https://localhost/data.php?estimateId=1001&proposalsFilter=all
上面返回 false 因為 $_GET 數(shù)組包含 2 個值。

TA貢獻1784條經(jīng)驗 獲得超9個贊
“目標是確保在下面的系列中始終只有一個 if 語句匹配?!?/p>
只需使用 elseif 而不是 if then。
<?php
# estimates/active/
if (in_array($_GET["estimatesFilter"], $_GET)) {
print_r('estimatesFilter: ' . $_GET["estimatesFilter"] . ' url parameter(s) was passed.');
print_r("<br>");
}
# This if keeps returning true even if estimateId is not the only item in the array?
# estimates/1001/
elseif (in_array($_GET["estimateId"], $_GET)) {
print_r('estimateId: ' . $_GET["estimateId"] . ' url parameter(s) was passed.');
print_r("<br>");
}
# estimates/1001/proposals/
elseif (in_array($_GET["estimateId"], $_GET) && in_array($_GET["proposalsFilter"], $_GET)) {
print_r('estimateId: ' . $_GET["estimateId"] . ' & ' . 'proposalsFilter: ' . $_GET["proposalsFilter"] . ' url parameter(s) was passed.');
print_r("<br>");
}
# estimates/1001/proposals/3001/
elseif (in_array($_GET["estimateId"], $_GET) && in_array($_GET["proposalId"], $_GET)) {
print_r('estimateId: ' . $_GET["estimateId"] . ' & ' . 'proposalId: ' . $_GET["proposalId"] . ' url parameter(s) was passed.');
print_r("<br>");
}
# estimates/1001/contracts/
elseif (in_array($_GET["estimateId"], $_GET) && in_array($_GET["contractsFilter"], $_GET)) {
print_r('estimateId: ' . $_GET["estimateId"] . ' & ' . 'contractsFilter: ' . $_GET["contractsFilter"] . ' url parameter(s) was passed.');
print_r("<br>");
}
# estimates/1001/contracts/3001/
elseif (in_array($_GET["estimateId"], $_GET) && in_array($_GET["contractId"], $_GET)) {
print_r('estimateId: ' . $_GET["estimateId"] . ' & ' . 'contractId: ' . $_GET["contractId"] . ' url parameter(s) was passed.');
print_r("<br>");
}
# estimates/1001/invoices/
elseif (in_array($_GET["estimateId"], $_GET) && in_array($_GET["invoicesFilter"], $_GET)) {
print_r('estimateId: ' . $_GET["estimateId"] . ' & ' . 'invoicesFilter: ' . $_GET["invoicesFilter"] . ' url parameter(s) was passed.');
print_r("<br>");
}
# estimates/1001/invoices/4001/
elseif (in_array($_GET["estimateId"], $_GET) && in_array($_GET["invoiceId"], $_GET)) {
print_r('estimateId: ' . $_GET["estimateId"] . ' & ' . 'invoiceId: ' . $_GET["invoiceId"] . ' url parameter(s) was passed.');
print_r("<br>");
}
?>
- 2 回答
- 0 關(guān)注
- 108 瀏覽
添加回答
舉報