vacio multidimensional llenar functions elementos ejemplos declarar asociativo array agregar php arrays key

multidimensional - ¿Caracteres permitidos en las teclas de arreglo php?



llenar array multidimensional php (7)

Además de todas las respuestas, ya que son ciertas: puede usar los PSR que son un tipo de reglas entre los mejores programadores por tener un estilo de codificación agradable y estándar.

Tengo algunas teclas de matriz php que están llenas de muchos personajes extraños.

Está permitido? ¿Hay alguna restricción para lo que no puedo usar?


Cualquier cosa que puedas rellenar en una cadena de PHP se puede usar como una clave de matriz. No hay límite en los personajes permitidos.

$a = array(); $x = ''long string of random garage''; echo $a[$x]; // this is ok $x = array(); echo $a[$x]; // not ok


De acuerdo con el manual :

La clave puede ser un número entero o una cadena. El valor puede ser de cualquier tipo.

Además, se producirán las siguientes conversiones de claves:

  • Las cadenas que contienen enteros válidos se convertirán al tipo de entero. Por ejemplo, la clave "8" se almacenará en realidad en 8. Por otro lado, "08" no se lanzará, ya que no es un número entero decimal válido.
  • Los flotantes también se convierten en enteros, lo que significa que la parte fraccionaria se truncará. Por ejemplo, la clave 8.7 se almacenará en realidad debajo de 8.
  • Los bools también se convierten en enteros, es decir, la clave verdadera se almacenará en 1 y la clave en 0.
  • El nulo se convertirá en la cadena vacía, es decir, la clave nula se almacenará en "".
  • Las matrices y los objetos no se pueden usar como claves. Si lo hace, aparecerá una advertencia: tipo de compensación ilegal.

El manual again :

Una cadena es una serie de caracteres, donde un carácter es igual a un byte. Esto significa que PHP solo admite un conjunto de 256 caracteres y, por lo tanto, no ofrece compatibilidad nativa con Unicode. Ver detalles del tipo de cadena.

En resumen, cualquier cadena puede ser una clave. Y una cadena puede contener datos binarios (hasta 2GB). Por lo tanto, una clave puede ser cualquier dato binario (ya que una cadena puede ser cualquier dato binario).

Algunos abusos aleatorios (válidos) de las teclas de matriz:

$w = array(chr(0) => ''null byte?'', chr(rand(0, 255)) => ''random byte?''); var_dump($w);


Encontré esta respuesta buscando más información sobre un problema que tenía. Estaba usando cadenas con caracteres UTF-8 en ellas, que no funcionarían como claves para una matriz que tenía.

Algo como

$str = "R&D - Solution"; $arr = array( "R&D - Solution" => "Research" ); echo $arr[$str]; // did not work

La solución (no grande o inteligente) para mí fue hacer esto ...

$str = md5("R&D - Solution"); $arr = array( md5("R&D - Solution") => "Research" ); echo $arr[$str]; // works!


La clave debe ser una cadena o un entero. Hay algunos lanzamientos que tienen lugar, pero creo que el manual hace un buen trabajo al explicar:

La clave puede ser un número entero o una cadena. El valor puede ser de cualquier tipo.

Además, se producirán las siguientes conversiones de claves:

  • Las cadenas que contienen enteros válidos se convertirán al tipo de entero. Por ejemplo, la clave "8" se almacenará en realidad en 8. Por otro lado, "08" no se lanzará, ya que no es un número entero decimal válido.
  • Los flotantes también se convierten en enteros, lo que significa que la parte fraccionaria se truncará. Por ejemplo, la clave 8.7 se almacenará en realidad debajo de 8.
  • Los bools también se convierten en enteros, es decir, la clave verdadera se almacenará en 1 y la clave en 0.
  • El nulo se convertirá en la cadena vacía, es decir, la clave nula se almacenará en "".
  • Las matrices y los objetos no se pueden usar como claves. Si lo hace, aparecerá una advertencia: tipo de compensación ilegal.

Las teclas de matriz de PHP pueden ser enteros o cadenas. Las cadenas PHP son matrices de bytes, lo que significa secuencias de bytes. No hay otros tipos de cadenas y PHP no impone restricciones especiales en las cadenas de teclas de matriz. En otras palabras: mientras sea una cadena, todo vale.


Personalmente no he tenido problemas con caracteres inusuales en las teclas de matriz. Lo que es y no es legal no está bien documentado, salvo decir que la clave debe ser escalar. Tu mejor opción es probarlo y ver.