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

Lia*_*ett 1 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"];
Run Code Online (Sandbox Code Playgroud)

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

Jos*_*hua 7

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

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

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

  • Nitpick:总是*"可能"将字符串转换为数字.如果在字符串中找不到其他有用的数字,结果可能只是"0".→http://php.net/manual/en/language.types.string.php#language.types.string.conversion (2认同)