1

什么时候:

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

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

但:

$person = 'bill';

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

这是预期的吗?今天这让我感到震惊,因为我一直在使用empty($array['key']),但从未is_array()在我的 if 语句中包含。

4

2 回答 2

3

因为$person是一个字符串,所以类数组索引被转换为一个int.

(int)'any non-numeric string in the world' == 0

因此,如果您使用随机的非数字字符串作为索引,您“自然地”会得到任何字符串的第一个字符。

于 2013-04-22T16:26:24.967 回答
1

因为您正在打印字符串的未定义索引,而不是数组。如果您尝试在 PHP 中打印字符串的索引,您将拥有字符串的每个字符:

$person = 'bill';
$person[0] //b
$person[1] //i
$person[2] //l
$person[3] //l
于 2013-04-22T16:27:23.333 回答