PHP字符串索引$ str [“test”]与$ str [0]相同?

时间:2016-06-29 09:32:14

标签: php string indexing

当引用PHP字符串中的元素(如数组)时,使用方括号[]可以使用类似[2]的数字从字符串中选择特定字符。但是,当使用类似[“example”]的字符串索引时,它总是返回与[0]相同的结果。

<?php
$str="Hello world.";
echo $str; // Echos "Hello world." as expected.
echo $str[2]; // Echos "l" as expected.
echo $str["example"]; // Echos "H", not expected.

$arr=array();
$arr["key"]="Test."
echo $arr["key"]; // Echos "Test." as expected.
echo $arr["invalid"]; // Gives an "undefined index" error as expected.
echo $arr["key"];

为什么它返回与[0]相同的结果?

1 个答案:

答案 0 :(得分:7)

PHP使用类型juggling将非拟合类型的变量转换为拟合类型。在您的情况下,PHP期望您的索引是一个数字,确切地说是一个整数。如果你给它一个字符串,它会尝试将其解析为数字。如果不可能,则默认为零。

旁注:如果你给它一个像“9penguins”这样的字符串,你会得到一个9。

关于类型杂耍的PHP手册:http://php.net/manual/de/language.types.type-juggling.php