代码之家  ›  专栏  ›  技术社区  ›  dkinzer

在PHP中,数组是否可以在其数组元素中引用自身?

  •  0
  • dkinzer  · 技术社区  · 14 年前

    我想知道数组的元素是否可以“知道”它们在数组中的位置并引用:

    有点像…

    $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
    
    3 回复  |  直到 14 年前
        1
  •  4
  •   user229044    14 年前

    它们本身不能“引用自己”,当然也不能通过 $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);
    }
    
        2
  •  2
  •   Piskvor left the building Rohit Kumar    14 年前

    不,PHP的数组是普通的数据结构( 对象),但没有这种功能。

    您可以使用 each() 并且跟踪键,但是结构本身不能做到这一点。

        3
  •  0
  •   tehsis    14 年前

    如您所见: http://php.net/manual/en/control-structures.foreach.php

    你可以做到:

    foreach($foo as $key => $value) {
      echo $key . '\n';
    }
    

    因此,在该示例中,您可以通过$key访问密钥