.文本>> 无Unicode支持. 只有ASCII工作是可靠的, 真的. 有个 mbstring 扩展, 上面提过的, 但会稍被打击.>> 这意味着使用内建的string函数处理UTF-8文本会有风险.>> 相似的, 在ASCII外, 也没有什么大小写比较概念. 尽管有扩展版本的大小写敏感的函数, 但它们不会认为 é 等于 É.>> 你不能在变量中内插keys , 如, "$foo[''key'']"是个语法错误. 你也不能 unquote it (这样会产生警告, 无论什么地方!), 或使用 ${...}/{$...}>> "${foo[0]}"是对的. "${foo[0][0]}"是个语法错误. 糟糕的拷贝类似 Perl 的语法 (两个根本不同的语议)?数组呕, 骚年.>> 这家伙扮演list数据类型, 操作hash, 和排序set, 解析 list, 偶尔会有些奇怪的组合. 它是怎样执行的? 以何种方式使用内存? 谁知道? 不喜欢, 反正我还有其它的选择.>> => 不是操作符. 它是个特别的结构, 仅仅存在于 array(...) 和 foreach 结构中.>> 负值索引不工作, 尽管 -1 也是个和0一样的合法键值.>> 尽管这是语言级的数据结构, 但没有简短语法; array(...)是简短语法. (PHP 5.4 带来了"literals", [...].)>> => 结构是基于 Perl , Perl允许 foo => 1 而不用引号. 在PHP中, 你这么做会得到警告; 没有无需引号创建 hash 字符串键值的方式.>> 数组处理函数常常让人迷惑或有不确定行为, 因为它们不得不对 lists, hashes, 或可能两者的结合体做运算. 考虑 array 分组, "计算arrays的不同部分".$first = array("foo" => 123, "bar" => 456); $second = array("foo" => 456, "bar" => 123); echo var_dump(array_diff($first, $second)); 这段代码將做什么? 如果 array_diff 將参数以 hashes 看待, 它们明显是不同的; 相同的keys有不同的值. 如果以list看待, 它们仍然是不同的; 值的顺序不同.事实上 array_diff 认为它们相等, 因为它以 sets 对待: 仅仅比较值, 忽略顺序.>> 同样, array_rand 随机选择keys时, 也有奇怪的行为, 这对大多数需要从列表中挑出东西的用例没什么帮助.尽管大量PHP代码依赖key的顺序:array("foo", "bar") != array("bar", "foo") array("foo" => 1, "bar" => 2) == array("bar" => 2, "foo" => 1) >> 如果两个数组混合的话, 会发生什么? 我留给读者自己弄清楚. (我不知道)>> array_fill 不能创建0长度的数组; 相反它会发出警告并返回 false.>> 所有的(很多的...) 排序函数就地操作而什么都不返回. 想新建一个已排序数组的拷贝, 没门; 你不得不自己拷贝数组, 然后排序, 然后再使用数组.>> 但 array_reverse 返回一个新数组.>> 一堆被排序的东西和一些键值对听起来像是个某种强大的处理函数参数的方式, 但, 没门.非数组 >> 标准库包含 "快速哈希", "特定的强类型"的hash结构OO实现. 然, 深入它, 有4类, 每种处理不同的键值对类型组合. 不清楚为什么内建的数组实现不能优化这些极其普通情况, 也不清楚它相对的性能怎样.>> 有个 ArrayObject 类 (实现了4个不同的接口) , 它包装数组让它看起来像对象. 自定义类可以实现同样的接口. 但只有限的几个方法, 其中有一半不像内