我想知道数组的元素是否能“知道”它们在数组中的位置并引用它:
像...一样的东西。
$foo = array(
'This is position ' . $this->position,
'This is position ' . $this->position,
'This is position ' . $this->position,
),
foreach($foo as $item) {
echo $item . '\n';
}
//Results:
// This is position 0
// This is position 1
// This is position 2
答案 0 :(得分:4)
他们本身不能“引用自己”,当然不能通过$this->position
,因为数组元素不一定是对象。但是,您应该跟踪它们的位置,作为迭代数组的副作用:
// Sequential numeric keys:
for ($i = 0; $i < count($array); ++$i) { ... }
// Non-numeric or non-sequential keys:
foreach (array_keys($array) as $key) { ... }
foreach ($array as $key => $value) { ... }
// Slow and memory-intensive way (don't do this)
foreach ($array as $item) {
$position = array_search($item, $array);
}
答案 1 :(得分:2)
不,PHP的数组是纯数据结构(不是对象),没有这种功能。
您可以使用each()
并跟踪键来跟踪数组中的位置,但结构本身无法执行此操作。
答案 2 :(得分:0)
正如您在此处所见:http://php.net/manual/en/control-structures.foreach.php
你可以这样做:
foreach($foo as $key => $value) {
echo $key . '\n';
}
因此,您可以通过该示例中的$ key访问密钥