Вопрос:

Why do strings behave like an array in PHP 5.3?

php arrays string php-5.3 php-5.4

682 просмотра

1 ответ

2599 Репутация автора

I have this code:

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

It's working fine in PHP 5.5, but in PHP 5.3 the condition returns true while $host contains a string like pjba01. It returns the first letter of $tierHosts['host'], that is, p.

What's so wrong with my code?

Автор: Ritesh Источник Размещён: 14.09.2015 10:22

Ответы (1)


23 плюса

53561 Репутация автора

Решение

You can access strings like an array and prior PHP 5.4 offsets like your name were silently casted to 0, means you accessed the first character of that string:

character | p | j | b | a | 0 | 1 |
-----------------------------------
index     | 0 | 1 | 2 | 3 | 4 | 5 |

After 5.3 such offsets will throw a notice, as you can also read in the manual:

As of PHP 5.4 string offsets have to either be integers or integer-like strings, otherwise a warning will be thrown. Previously an offset like "foo" was silently cast to 0.

Автор: Rizier123 Размещён: 14.09.2015 10:26
Вопросы из категории :
32x32