28 votos

PHP: hace referencia a sí misma matriz

Hay una manera de hacer referencia a una matriz clave dentro de la matriz? Esto puede tener más sentido en formato de código:

$array=array(
  "Key1"=>array(
    "Value1",
    "Value2"
  ),
  "Key2"=>&$this['Key1']
);

Lo que yo quiero es que $array['Key2'] a la salida de la misma como $array['Key1']. Me pueden agregar $array['Key2']=&$array['Key1']; una vez creada la matriz, pero que le gustaría mantener a todos en un bloque de código si es posible.

He comprobado la documentación sobre las referencias, así como algunos de los sugerir preguntas similares aquí y en la búsqueda para "php referencia a la matriz".

19voto

DaveRandom Puntos 45661

La respuesta a esto, como resulta, es que Sí. Sin embargo, no es un orden de la sintaxis, ya que utiliza una especie de sub-declaración, y sale del ámbito actual de la yacija con un extra de variable de referencia.

Considere el siguiente código:

<?php

  $array = array(

    // Creates Key1 and assigns the value to it
    // A copy of the value is also placed in $ref
    // At this stage, it's not a reference
    "Key1"=>($ref = array(
      "Value1",
      "Value2"
    )),

    // Now Key2 is a reference to $ref, but not to Key1
    "Key2"=>&$ref,

    // Now everything is referenced together
    "Key1"=>&$ref

  );

Me sorprendió que este trabajó sin errores, pero no - aquí está la prueba. Por supuesto, usted no hace esto, pero se puede...

0voto

Anton Puntos 663

Imposible hacerlo en un solo bloque, debido a que no se ha inicializado la variable todavía. Mismo con las variables de la clase. Para hacer tal cosa, usted tendrá que crear cualquier variable de cualquier manera, y que en uso de sus enlaces, pero su uso de la memoria, así que una vez más, la verdadera respuesta a tu pregunta es imposible :)

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X