У меня есть некоторый код PHP, указанный ниже. У меня есть ловушка, которая говорит мне, если ввод данных не соответствует ни одному из тестов в коде («Там нет ложки», он говорит. Умный, а?).
Проблема возникает, когда данные - это не является необычным способом, который I может видеть, и в этом отношении, полностью аналогичен другим данным, которые выживают в этой ловушке - которые делает соответствует одному из тестов, так или иначе проходит через это. И, конечно же, ошибка «неожиданная ошибка» выводит данные, которые были введены, просто чтобы убедиться. Насколько я могу судить, в этих входных данных нет ничего плохого.
Во-первых, есть вывод, который может немного облегчить понимание:
Customer XXXXXXXXXXXX, DID XXXXX2515 has been billed already for 2010-01.
Deleting last billing from database before continuing.
This DID is a Toll Free Number.
Trunkrate is therefore: 0.05
Starting billing for DID XXXXXX2515
Trunkrate: 0.05 Type: TFN
2010-01-22 15:45:15: billsecs: 22 billMin: 1 Source: XXXXXX0808 Destination: XXXXXX2515
Error 34: There is no spoon.
Source: XXXXXX0808 Destination: XXXXXX2515 Did: XXXXXX2515 Type: TFN
2010-01-12 14:49:41: billsecs: 55 billMin: 1 Source: 0000000000 Destination: XXXXXX2515
Error 34: There is no spoon.
Source: 0000000000 Destination: XXXXXX2515 Did: XXXXXX2515 Type: TFN
2010-01-12 11:46:45: billsecs: 6 billMin: 1 Source: XXXXXX8689 Destination: XXXXXX2515
Error 34: There is no spoon.
Source: XXXXXX8689 Destination: XXXXXX2515 Did: XXXXXX2515 Type: TFN
2010-01-08 12:56:57: billsecs: 610 billMin: 11 Source: XXXXXX2515 Destination: 1XXXXXX0798
Error 34: There is no spoon.
Source: XXXXXX2515 Destination: 1XXXXXX0798 Did: XXXXXX2515 Type: TFN
2010-01-07 11:01:49: billsecs: 17 billMin: 1 Source: XXXXXX2515 Destination: 011XXXXXXX41022
Error 34: There is no spoon.
Source: XXXXXX2515 Destination: 011XXXXXXX41022 Did: XXXXXX2515 Type: TFN
2010-01-05 11:20:24: billsecs: 7 billMin: 1 Source: XXXXXX0928 Destination: XXXXXX2515
Error 34: There is no spoon.
Source: XXXXXX0928 Destination: XXXXXX2515 Did: XXXXXX2515 Type: TFN
И, с кодом:
// If the call is incoming, just charge the trunk rate.
if ($thisCall['dst'] == $did && $type == "IAX") {
$ldrate = 0;
$location = "British Columbia";
$calltype = "NALD";
if ($debug) print "Incoming call to IAX trunk.\n";
// Incoming calls to TFNs
} elseif ($thisCall['dst'] == $did && $type == "TFN") {
$ldrate = 0;
$location = "Toll-Free";
$calltype = "NALD";
// If the call is outgoing, check to see if it's local
} elseif ($thisCall['src'] == $did) {
// If the outgoing call is local, just charge the trunk rate
// In this case, src is our customer, dst is remote end
if (callIsLocal($thisCall['src'], $thisCall['dst'])) {
$ldrate = 0;
$location = "British Columbia";
$calltype = "NALD";
}
// If the outgoing call is long distance, get the rate from the database
else {
$ratearr = getRate($thisCall['dst']);
$ldrate = $ratearr['ldrate'];
$location = $ratearr['location'];
$calltype = $ratearr['calltype'];
if ($debug) print "LDrate: $ldrate, Location: $location, Calltype: $calltype\n";
}
} else {
print "Error 34: There is no spoon.\n";
print "Source: " . $thisCall['src'] . " Destination: " . $thisCall['dst'];
print " Did: $did Type: $type\n ";
continue;
}