Вы неправильно интерпретируете результаты. То, что strcasecmp
возвращает, согласно документам - это число, не равное нулю, если строки неравны, и ноль, если они равны. Как известно, в PHP ноль соответствует false, а ненулевой соответствует true. Таким образом, правильная версия вашего теста
echo (strcasecmp('hello', ' ') === 0) ? 'true' : 'false';
или, альтернативно,
echo strcasecmp('hello', ' ') ? 'false' : 'true';
из которых я предпочитаю первый, более подробный и не содержащий каких-либо неявных преобразований типов в логические значения.