У меня есть этот код:
$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.