Почему результат вывода такой?
Преобразование в строку

Значение boolean TRUE преобразуется в строку "1", а значение FALSE преобразуется в "" (пустую строку). Это позволяет преобразовывать значения в обе стороны - из булева типа в строковый и наоборот.

Массивы
key может быть либо типа integer, либо типа string. value может быть любого типа.
<?php

$var = (string) true;
echo $var; // 1

$var = (string) '1';
echo $var; // 1

$var = (string) '1';
echo $var; // 1

Вы перезаписываете значение массива с одним и тем же ключем.