什么是最好的方法?

Jor*_*ing 2 php arrays

这两个索引之间有什么区别,如果有,哪个更好用?想要了解有关性能和差异的信息,如果有的话.

$array[$data]
$array["$data"]
Run Code Online (Sandbox Code Playgroud)

提前致谢!

*编辑; 刚刚发现$array["{$data}"],有关那个的任何信息?

Eli*_*gem 5

就个人而言,由于清晰,我会选择第一个版本.PHP将为您排序:

$a = range(1,10);
$data = 2;
echo $a[$data];//3
$b = array('foo' => 'bar');
echo $b[$data];//notice undefined offset, echoes nothing!
$data = 'foo';
echo $b[$data];//echo bar
Run Code Online (Sandbox Code Playgroud)

其他几个原因:'$data'!== "$data",因为单引号和双引号之间存在差异.所以第二种方式更容易出错.
使用数组很乱:

$a[$data['key']];//is clear: use value of $data -> key 
Run Code Online (Sandbox Code Playgroud)

相比:

$a["{$data[key]}"];
//or
$a["{$data['key']}"];
Run Code Online (Sandbox Code Playgroud)

个人喜好的空间更大.虽然这似乎是件好事,但是在团队中工作时,使用像Git这样的SVC系统,很快就会证明这很痛苦......相信你吧!

注意:

在你的问题编辑("{$var}").这称为复杂(卷曲)语法,它可以避免歧义:

echo "some string with $an[array][value]";
Run Code Online (Sandbox Code Playgroud)

解析器应该做什么?它应该回应:

"some string with <value of$an>[array][value]";
Run Code Online (Sandbox Code Playgroud)

将数组键访问器视为字符串常量,或者您的意思是:

"some string with <$an[array][value]>";
Run Code Online (Sandbox Code Playgroud)

它可以回应:"一些字符串与foobar"以及"一些字符串与数组[数组] [值]",这就是你将表达式分组的原因:

echo "some string with {$an[array][value]}";
Run Code Online (Sandbox Code Playgroud)