我不明白这个数组访问语法:
$target[$segs[count($segs)]]
是否真的可以将变量用作多维数组键?
答案 0 :(得分:3)
如果$segs
是仅具有连续索引的数值数组,那么可能会导致错误
意思是,它会失败:
array("foo","bar");
但是为
工作array("foo", 2=>"bar");
现在假设我们处理第一个案例,那么这将有效:
$target[$segs[count($segs) - 1]]
首先,将评估count($segs) - 1
并返回一个数字。在这种情况下,$segs
的最后一个索引(前提是它是一个数值数组)。
$segs[count($segs) - 1]
将返回$segs
中的最后一个元素。无论该值是什么,都将用作$target[...]
的索引。
总结一下:它是嵌套数组索引并在里面进行评估。
是否需要这样的方法取决于您尝试解决的问题。如果您不知道在哪里使用这种嵌套的变量数组索引,那么您可能不需要它。
答案 1 :(得分:2)
如果$segs
是一个数组,那么语法很好。但值得注意的是,如果您使用数字索引数组作为$segs
,则调用count($segs)
是一个不存在的键,因为索引从零开始。