2012-09-05 20 views
5

Czy to jest możliwe w php, aby utworzyć tablicę również jako klucz tablicy?Tablica PHP jako klucz tablicy

Przykład:

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

Nie, nie jest to możliwe. klucze tablicy muszą być liczbami całkowitymi lub łańcuchami. jest to wyjaśnione w http://php.net/manual/en/language.types.array.php – Gordon

+0

Teoretycznie możesz "serializować()" tablicę w łańcuch, który będzie używany jako klucz tablicy, ale mogę " Sprawdź, dlaczego twój projekt tego wymaga i naprawdę nie zalecam tego. Byłoby to brzemienne z powodu problemów, takich jak konieczność reserializacji za każdym razem, gdy trzeba było to zmienić. –

+0

nie tylko to nie jest możliwe, ale nie widzę nawet praktycznego zastosowania - indeksy i klucze assoc we wszystkich językach programowania (wspierając je) według mojej wiedzy są wartościami skalarnymi –

Odpowiedz

-4

Co złego

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

można wtedy zrobić

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

i użyć $child niezależnie od celu

3

T jego nie jest możliwe - klucze tablicy musibe strings or integers.

Co można zrobić, to użyć serialize:

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

który będzie taki sam, jak:

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

i może być dostępne jak:

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

Należy jednak pamiętać, że serializowany łańcuch, który byłby unikalnym identyfikatorem elementu tablicy, jest wyraźnie dość skomplikowany i prawie niemożliwe do wpisania ręcznie.

+5

To jest tak przerażające patrzeć na ... – Erik

+0

@Erik yep 'tis :) –

+0

tak .. przerażające, ale wydajne myślę .. dzięki .. – Aldee

1

Macierze PHP mogą zawierać klucze integer i string, a ponieważ PHP nie rozróżnia tablic indeksowanych i asocjacyjnych. Poszukaj instrukcji php Php Manual

+1

dzięki damian ..: D – Aldee

+0

jesteś mile widziany (Y) –

7

Nie, jeśli czytasz manual

Tablica w PHP jest obecnie uporządkowaną map. Mapa jest typem, który łączy wartości z kluczami. Ten typ jest zoptymalizowany pod kątem kilku różnych zastosowań; może być traktowany jako tablica, lista (wektor), tablica asocjacyjna (implementacja mapy), słownik, kolekcja, stos, kolejka i prawdopodobnie więcej. Jako wartości tablicowe mogą należeć inne tablice, drzewa i wielowymiarowe tablice są również możliwe.

I:

Kluczem może być albo całkowitą lub ciąg. Wartość może być dowolnego rodzaju.

+0

Masz rację. Właśnie zdałem sobie z tego sprawę z twoją odpowiedzią ... dzięki ... trzymaj to .. – Aldee