我有下面的圖片來顯示我需要做什么。

我擁有的資料是用藍色標記的資料,據此我需要得到用紅色標記的資料的結果。
因此,例如我的客戶有下一個資料:
| 安格雷索 | 銀行化 | 終極 6 | 終極 12 | 終極 24 |
|---|---|---|---|---|
| SI | SI | 不 | 不 | 不 |
結果將是:
| 加州化 | 提示客戶 | 結果 |
|---|---|---|
| 一種 | 1 | 亞太經合組織 |
任何人都可以幫助我在 PHP 中實作這一目標,而無需嵌套大量 if/else 陳述句嗎?
我需要一個函式來回傳一個包含 3 個結果的陣列。
function checkClient($ingreso, $bancarizacion, $ult6, $ult12, $ult24){
$data = [];
// conditions
return $data;
}
提前致謝!
uj5u.com熱心網友回復:
在沒有條件構造的情況下完成此操作的一種簡單方法是將相關欄位連接到“查找字串”中,然后將結果字串與映射結果進行匹配。我們在這里使用match陳述句(PHP 8),但您也可以進行關聯陣列查找。
function checkClient($ingreso, $bancarizacion, $ult6, $ult12, $ult24) {
// Calificacion => Mapped from: ingreso bancarizacion
$calci = match($ingreso . $bancarizacion) {
'SISI' => 'A',
'SINO' => 'B',
'NOSI' => 'C',
'NONO' => 'D',
default => '?'
};
// Tipo, Resultado => Mapped from: ULT6 12 24
$tipo_resu = match($ult6 . $ult12 . $ult24) {
'NONONO' => [1, 'APTO'],
'NONOSI' => [2, 'APTO'],
'NOSINO' => [3, 'REVISARE'],
'NOSISI' => [4, 'REVISARE'],
'SI' => [5, 'NO APTO'],
default => [0, 'OBSCURO']
};
return [
'Calificacion' => $calci,
'Tipo Clientes' => $tipo_resu[0],
'Resultado' => $tipo_resu[1]
];
}
不需要ifs或buts。:) Map/case 查找,無論是使用match陣列switch還是關聯陣列,通常都是避免復雜的 if/else 構造和多重評估鏈的便捷方式。您也可以match(true) {使用類似 的手臂$ult6 == 'NO' && $ult12 == 'NO' && $ult24 == 'SI' => [2, 'APTO'],但對于這種情況,串聯是緊湊且足夠的。
您也可以在資料庫級別上實作此邏輯,例如使用 case 陳述句,盡管維護它可能需要更多的作業。我會把這個練習留給其他人來解決。
PS只是為了說明這樣做的陣列查找方式。這里與 match 的唯一區別是,我們不是在一個陳述句中包含所有內容,而是單獨定義我們的映射,查找陣列鍵,??如果不存在匹配鍵,則使用運算子提供默認值。
$calci_map = [
'SISI' => 'A',
'SINO' => 'B',
'NOSI' => 'C',
'NONO' => 'D'
];
$calci = $calci_map[$ingreso . $bancarizacion] ?? '?';
第二個查找集也是如此。在這種情況下,您使用哪種方法確實沒有太大區別。如果您還沒有使用 PHP 8,那么您顯然必須使用陣列查找。
uj5u.com熱心網友回復:
你必須為每一列做手動索引,但沒有理由自己做,因為這是資料庫做的事情之一。如果您將此資料放入資料庫(比如說 MongoDB)并為所有這些列設定索引。您將能夠使用優雅的代碼快速找到匹配項。
uj5u.com熱心網友回復:
在我看到@MarkusAO 的答案之前,我最終這樣做了。這行得通,但是現在我看到了它,我會嘗試你的答案。
function verificarTipoCliente($ingreso, $bancarizacion,$ult6, $ult12, $ult24){
$data = "$ingreso-$bancarizacion-$ult6-$ult12-$ult24";
$config = array(
// A
"SI-SI-NO-NO-NO" => array("calificacion" => "A", "tipo" => 1, "resutado" => "APTO", "tasa" => "SI", "promo" => "SI"),
"SI-SI-NO-NO-SI" => array("calificacion" => "A", "tipo" => 2, "resutado" => "APTO", "tasa" => "SI", "promo" => "SI"),
"SI-SI-NO-SI-NO" => array("calificacion" => "A", "tipo" => 3, "resutado" => "CON OBSERVACIONES", "tasa" => "SI", "promo" => "SI"),
"SI-SI-NO-SI-SI" => array("calificacion" => "A", "tipo" => 4, "resutado" => "CON OBSERVACIONES", "tasa" => "SI", "promo" => "SI"),
"SI-SI-SI--" => array("calificacion" => "A", "tipo" => 5, "resutado" => "NO APTO", "tasa" => "SI", "promo" => "SI"),
// B
"SI-NO-NO-NO-NO" => array("calificacion" => "B", "tipo" => 1, "resutado" => "APTO", "tasa" => "SI", "promo" => "SI"),
"SI-NO-NO-NO-SI" => array("calificacion" => "B", "tipo" => 2, "resutado" => "APTO", "tasa" => "SI", "promo" => "SI"),
"SI-NO-NO-SI-NO" => array("calificacion" => "B", "tipo" => 3, "resutado" => "CON OBSERVACIONES", "tasa" => "SI", "promo" => "SI"),
"SI-NO-NO-SI-SI" => array("calificacion" => "B", "tipo" => 4, "resutado" => "CON OBSERVACIONES", "tasa" => "SI", "promo" => "SI"),
"SI-NO-SI--" => array("calificacion" => "B", "tipo" => 5, "resutado" => "NO APTO", "tasa" => "SI", "promo" => "SI"),
// C
"NO-SI-NO-NO-NO" => array("calificacion" => "C", "tipo" => 1, "resutado" => "APTO", "tasa" => "SI", "promo" => "SI"),
"NO-SI-NO-NO-SI" => array("calificacion" => "C", "tipo" => 2, "resutado" => "APTO", "tasa" => "SI", "promo" => "SI"),
"NO-SI-NO-SI-NO" => array("calificacion" => "C", "tipo" => 3, "resutado" => "CON OBSERVACIONES", "tasa" => "SI", "promo" => "SI"),
"NO-SI-NO-SI-SI" => array("calificacion" => "C", "tipo" => 4, "resutado" => "CON OBSERVACIONES", "tasa" => "SI", "promo" => "SI"),
"NO-SI-SI--" => array("calificacion" => "C", "tipo" => 5, "resutado" => "NO APTO", "tasa" => "SI", "promo" => "SI"),
// D
"NO-NO-NO-NO-NO" => array("calificacion" => "D", "tipo" => 1, "resutado" => "APTO", "tasa" => "SI", "promo" => "SI"),
"NO-NO-NO-NO-SI" => array("calificacion" => "D", "tipo" => 2, "resutado" => "APTO", "tasa" => "SI", "promo" => "SI"),
"NO-NO-NO-SI-NO" => array("calificacion" => "D", "tipo" => 3, "resutado" => "CON OBSERVACIONES", "tasa" => "SI", "promo" => "SI"),
"NO-NO-NO-SI-SI" => array("calificacion" => "D", "tipo" => 4, "resutado" => "CON OBSERVACIONES", "tasa" => "SI", "promo" => "SI"),
"NO-NO-SI--" => array("calificacion" => "D", "tipo" => 5, "resutado" => "NO APTO", "tasa" => "SI", "promo" => "SI"),
);
if (array_key_exists($data, $config)) {
return $config[$data];
} else {
return array("calificacion" => "", "tipo" => "", "resutado" => "", "tasa" => "", "promo" => "");
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/466392.html
上一篇:關閉多個掃描儀會導致問題
