字符串的数组键始终计算为第一个字符(true)

时间:2013-04-22 16:17:56

标签: php

当:

$person = array('name' => 'bill');

isset($person['jibberish'])评估为FALSE。

可是:

$person = 'bill';

isset($person['jibberish'])的计算结果为TRUE,因为$person['jibberish']返回字符串$ person的第一个字符。

这是否符合预期?今天这对我来说是令人震惊的,因为我总是使用empty($array['key'])而没有在我的if语句中包含is_array()

2 个答案:

答案 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