Почему строки работают как массив в PHP 5.3?

У меня есть этот код:

$tierHosts['host'] = isset($host['name']) ? $host['name'] : $host; 

Он отлично работает в PHP 5.5, но в PHP 5.3 условие возвращает true, а $host содержит строку типа pjba01 . Он возвращает первую букву $tierHosts['host'] , то есть p .

Что не так с моим кодом?

Вы можете получить доступ к строкам, подобным массиву, и предшествующим смещениям PHP 5.4, например, ваше name было равномерно отключено до 0, означает, что вы получили доступ к первому символу этой строки:

  персонаж |  p |  j |  b |  a |  0 |  1 |
 -----------------------------------
 индекс |  0 |  1 |  2 |  3 |  4 |  5 |

После 5.3 такие смещения будут вызывать уведомление, как вы также можете прочитать в руководстве:

Начиная с PHP 5.4 смещения строк должны быть либо целыми, либо целыми целыми строками, иначе будет выдано предупреждение. Раньше смещение, подобное «foo», было беззвучно приписано к 0.