Confusão de conversão de tipo PHP

Eu tenho o seguinte código:

<?php
    $val = 0;
    $res = $val == 'true';

    var_dump($res);
?>

Eu sempre tive a impressão de que $ res deveria ser 'false', como na expressão acima, o PHP tentaria digitar cast $ val para o tipo booleano (onde zero será convertido como false) e uma string (string não vazia é true). Mas se eu executar o código acima, a saída será:

boolean true

Estou esquecendo de algo? Obrigado.

questionAnswers(3)

yourAnswerToTheQuestion