Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么字符串在PHP5.3中的行为类似于数组?_Php_Arrays_String_Php 5.3_Php 5.4 - Fatal编程技术网

为什么字符串在PHP5.3中的行为类似于数组?

为什么字符串在PHP5.3中的行为类似于数组?,php,arrays,string,php-5.3,php-5.4,Php,Arrays,String,Php 5.3,Php 5.4,我有以下代码: $tierHosts['host'] = isset($host['name']) ? $host['name'] : $host; 它在PHP5.5中运行良好,但在PHP5.3中,当$host包含类似pjba01的字符串时,条件返回true。它返回$tierHosts['host']的第一个字母,即p 我的代码有什么问题吗?和之前的PHP 5.4偏移量(如您的名称等)被自动转换为0,这意味着您访问了该字符串的第一个字符: character | p | j | b | a |

我有以下代码:

$tierHosts['host'] = isset($host['name']) ? $host['name'] : $host;
它在PHP5.5中运行良好,但在PHP5.3中,当
$host
包含类似
pjba01
的字符串时,条件返回true。它返回
$tierHosts['host']
的第一个字母,即
p

我的代码有什么问题吗?

和之前的PHP 5.4偏移量(如您的
名称
等)被自动转换为0,这意味着您访问了该字符串的第一个字符:

character | p | j | b | a | 0 | 1 | ----------------------------------- index | 0 | 1 | 2 | 3 | 4 | 5 | 字符| p | j | b | a | 0 | 1| ----------------------------------- 指数| 0 | 1 | 2 | 3 | 4 | 5| 5.3之后,此类偏移将引发一个通知,您也可以在手册中阅读:

从PHP5.4开始,字符串偏移量必须是整数或类似整数的字符串,否则将抛出警告。以前,像“foo”这样的偏移量被无声地转换为0


您可以使用
(is_array($host)和&isset($host[“name”])
绕过此行为。如果不清楚您将收到哪种类型,请始终对照您需要的类型进行检查。有关您描述的行为的更多详细信息,请参阅Rizier123s的答案。如果您对PHP中可能让您措手不及的其他一些事情感兴趣,请阅读本文。为什么字符串的行为像数组。。。?因为它们是一个数组。。。