【发布时间】:2015-12-10 07:33:51
【问题描述】:
我有这个代码:
$tierHosts['host'] = isset($host['name']) ? $host['name'] : $host;
它在 PHP 5.5 中运行良好,但在 PHP 5.3 中,条件返回 true,而 $host 包含类似 pjba01 的字符串。它返回$tierHosts['host']的第一个字母,即p。
我的代码有什么问题?
【问题讨论】:
-
您可以使用
(is_array($host) && isset($host["name"]))绕过此行为。如果不清楚您将收到哪种类型,请务必检查您需要的类型。有关您描述的行为的更多详细信息,请参阅 Rizier123s 的答案。 -
如果您对 PHP 中可能让您措手不及的其他一些事情感兴趣,请阅读本文。 eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design
-
为什么字符串表现得像一个数组...?因为它们是一个数组...
标签: php arrays string php-5.3 php-5.4