ОК, у меня есть функция, которая сравнивает значения и возвращает результат, независимо от случая, а именно: между средствами Transfer = между средствами ПЕРЕДАЧИ здесь функция:
function fncResult ($expVal, $actVal)
{
$negNulls=array("-5","-10","-15","-20","-25");
if (!in_array($expVal, $negNulls))
{
if(strtolower($expVal)==strtolower($actVal))
{
echo "
<td class='match' title='The values match.'>Match</td>
</tr>";
}
else
{
echo "
<td class='notMatch' title='The values do not match.'>Not Match<br />No Match</td>
</tr>";
}
}
else
{
echo "
<td class='null' title='The value in the XML was a negative null.'>Negative Null</td>
</tr>";
}
}
Он работает около 99% времени, кроме случаев, когда это приходит к следующему:
//--Type of service requested
echo "
<tr>
<td>E02_04</td>
<td>Type of Service Requested</td>
<td>36. <Nature of Call></td>
<td>$fldServReq</td>
<td>".fncGrabNemsis("E02_04",$fldServReq,$local)."</td>
<td>".fncIsSet($CZ_E02_04[1])."</td>";
fncResult(fncGrabNemsis("E02_04",$fldServReq,$local),fncIsSet($CZ_E02_04[1]));
Хотя это выглядит более сложным, это действительно просто strtolower ($ expVal) == strtolower ($ actVal), сравнение. Когда я повторяю сопоставляемые ценности, я получаю: «перенос промежуточной передачи» и «перенос без потерь» и «Нет соответствия» ... WTF? Может быть, потому что первое значение исходит от XML (UTF-8), а второе - от БД (?). Я не знаю, что делать, и я невероятно расстроен, так как это простая задача. Спасибо за любую помощь!
Почему бы вам просто не использовать [strcasecmp] (http://uk3.php.net/manual/en/function.strcasecmp.php)? –
Там могут быть пробелы. 'var_dump' и проверить, равны ли их длины, или сначала попробуйте' trim' на входе. – netcoder
Весь этот код бесполезен, не видя в нем данных. Вполне вероятно, что у вас возникли проблемы с кодировкой символов. – meagar