当:
$person = array('name' => 'bill');
isset($person['jibberish'])
评估为FALSE。
可是:
$person = 'bill';
isset($person['jibberish'])
的计算结果为TRUE,因为$person['jibberish']
返回字符串$ person的第一个字符。
这是否符合预期?今天这对我来说是令人震惊的,因为我总是使用empty($array['key'])
而没有在我的if语句中包含is_array()
。
答案 0 :(得分:3)
因为$person
是一个字符串,所以类似数组的索引将转换为int
。
(int)'any non-numeric string in the world' == 0
因此,如果您使用随机的非数字字符串作为索引,则“自然地”获取任何字符串的第一个字符。
答案 1 :(得分:1)
因为您正在打印字符串的未定义索引,而不是数组。 如果您尝试在PHP中打印字符串索引,您将拥有字符串的每个字符:
$person = 'bill';
$person[0] //b
$person[1] //i
$person[2] //l
$person[3] //l