在PHP中,数组是否可以在其数组元素中引用自身?
我想知道数组的元素是否可以“知道”它们在数组中的位置并引用: 类似于在PHP中,数组是否可以在其数组元素中引用自身?,php,arrays,Php,Arrays,我想知道数组的元素是否可以“知道”它们在数组中的位置并引用: 类似于 $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: /
$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
它们本身不能“引用自己”,当然也不能通过$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);
}
//顺序数字键:
对于($i=0;$i$value的数组){…}
//缓慢且内存密集的方式(不要这样做)
foreach($数组作为$项){
$position=array\u搜索($item,$array);
}
它们本身不能“引用自己”,当然也不能通过$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);
}
//顺序数字键:
对于($i=0;$i$value的数组){…}
//缓慢且内存密集的方式(不要这样做)
foreach($数组作为$项){
$position=array\u搜索($item,$array);
}
不,PHP的数组是简单的数据结构(不是对象),没有这种功能
通过使用
each()
并跟踪键,您可以跟踪数组中的位置,但结构本身无法做到这一点。不,PHP的数组是纯数据结构(不是对象),没有这种功能
通过使用each()
并跟踪关键点,您可以跟踪阵列中的位置,但结构本身无法做到这一点。如您所见:
你可以做:
foreach($foo as $key => $value) {
echo $key . '\n';
}
因此,在该示例中,您可以通过$key访问密钥,如下所示:
你可以做:
foreach($foo as $key => $value) {
echo $key . '\n';
}
因此,在那个示例中,您可以通过$key访问密钥我知道这是可能的,但我想知道是否有一种方法可以在不使用foreach语句的情况下实现这一点。@DKinzer您可以使用
array\u search
查找数组中某个项目的索引,只要给定一个数组及其一个元素,但如果没有现成的索引,就很难达到这种状态。我知道这是可能的,但我想知道是否有一种方法可以不用foreach语句来实现。@DKinzer您可以使用array\u search
查找数组中某个项目的索引,只要给定一个数组及其一个元素,但如果没有现成的索引,就很难达到这种状态。一旦定义了数组,您就可以通过这种方式访问它;但我相信OP询问的是类似SQL的LAST\u INSERT\u ID()
一旦定义了数组,就可以通过这种方式访问它;但我相信OP询问的是类似SQL的LAST\u INSERT\u ID()