2012-09-05 26 views
5

¿Es posible en php hacer una matriz también una clave de matriz?matriz de PHP como clave de matriz

Ejemplo:

array(
    array('sample', 'abc') => 'sample value' 
); 
+10

no, esto no es posible. las claves de matriz deben ser enteros o cadenas. esto se explica en http://php.net/manual/en/language.types.array.php – Gordon

+0

Podría, teóricamente, 'serializar()' la matriz en una cadena para usarla como una matriz, pero puedo ' Veo por qué su diseño requeriría esto y realmente no defiendo hacerlo. Sería plagado de problemas, como tener que reserializar cada vez que necesitó cambiarlo. –

+0

no solo no es posible, pero ni siquiera veo un uso práctico para él - los índices y las claves asociadas en todos los lenguajes de programación (que los soportan) a mi conocimiento son valores escalares –

Respuesta

-4

cuál es incorrecto con

array(
    'sample value' => array('sample', 'abc') 
); 

usted podría entonces hacer

foreach($array as $string => $child){ 
... 
} 

y utilizar el $child para cualquier propósito

3

T no es posible - las teclas de matriz debenbe strings or integers.

Lo que podría hacer es utilizar serialize:

$myArr = array(serialize(array('sample', 'abc')) => 'sample value'); 

que será el mismo que:

$myArr = array('a:2:{i:0;s:6:"sample";i:1;s:3:"abc";}' => 'sample value'); 

y se puede acceder a ella como:

echo $myArr[serialize(array('sample', 'abc'))]; 

Pero tenga en cuenta que la La secuencia serializada que sería el identificador único para el elemento de matriz es claramente bastante complicada y casi imposible de escribir a mano.

+5

Esto es tan aterrador como para mirar ... – Erik

+0

@Erik yep 'tis :) –

+0

sí ... aterrador pero eficiente, creo .. gracias .. – Aldee

1

Las matrices PHP pueden contener enteros y claves de cadena mientras que PHP no distingue entre matrices indexadas y asociativas. Busque manual de php Php Manual

+1

gracias damian ..: D – Aldee

+0

de nada (Y) –

7

No, si usted lee el manual

una matriz en PHP es en realidad un mapa ordenado. Un mapa es un tipo que asocia valores a claves. Este tipo está optimizado para varios usos diferentes; se puede tratar como una matriz, lista (vector), tabla hash (una implementación de un mapa), diccionario, colección, pila, cola y probablemente más. Como los valores de matriz pueden ser otras matrices, también son posibles árboles y matrices multidimensionales.

Y:

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

+0

Tienes razón ... Me acabo de dar cuenta con tu respuesta ... gracias .. sigan así .. – Aldee

Cuestiones relacionadas