php 中用方括号[] 和 用大括号{} 对数组索引的区别?

jKey
  • 506

发现在php中用 [] 和 {} 都可以对数组进行索引,如

<?php
$arr = array("a","b","c");
echo $arr{1};
echo $arr{2};

输出:

bc

在看 php 代码时数组都是通过 [] 进行索引的,但是有时也会用 {}

现在有些不解的是用 {} 对数组索引有什么特定的意义吗?

回复
阅读 23.9k
3 个回答
✓ 已被采纳

以下仅仅是我的猜测,因为用花括号来取元素的这个做法最早是出现在取字符串的某个字符时用到,这也是在官方文档里唯一发现的对花括号取元素的描述 http://www.php.net/manual/en/language...

那么php为什么会允许用花括号在字符串里取字符呢,这我也不知道?也许是为了兼容某种奇怪的语法,也许是某个开发者心血来潮给支持了,也许是某些历史原因,反正它就在那里了,这门语言充满了各种难以解释的特性,你得习惯。

我们知道在php里字符串其实跟数组在访问方法上是一致的,因此有人就会试试既然字符串可以用花括号取,那么数组可不可以呢?结果一试还真可以,因此黑客们为了秀一下自己的发现,就会在程序中使用这种非正式的写法。

而不明所以者,以为这么写会给程序赋予某种神奇的力量(这很正常,每个人都有过这种时候。因为这种写法看起来挺酷的,而且它很冷僻,好东西总是不为所知的,也许它有性能的提高?管它呢,先写着)。

其实它们的作用是完全一样,而且我建议你一直使用方括号来访问数组,因为说不定哪天某人偷偷就把这个特性给干掉了:)

<?php
$array = array(
    "foo" => "bar",
    "bar" => "foo",
);

// 自 PHP 5.4 起
$array = [
    "foo" => "bar",
    "bar" => "foo",
];
?>
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏