Jeśli istnieją jakieś ograniczenia dotyczące kluczy tablicowych w PHP? Długość ? Niedopuszczalne ciągi znaków ?

W oficjalnej dokumentacji znalazłem tylko to, ale nie ma informacji o ograniczeniach kluczy.

Klucz może być liczbą całkowitą lub łańcuchem. Jeśli klucz jest standardową reprezentacją liczby całkowitej, zostanie zinterpretowany jako taki (tj. „8” zostanie zinterpretowane jako 8, a „08” będzie zinterpretowane jako „08”). Pływaki w kluczu są obcinane do liczby całkowitej. Typy tablic indeksowanych i asocjacyjnych są tego samego typu w PHP, które mogą zawierać zarówno indeksy całkowite, jak i łańcuchowe.*

11
Fedir RYKHTIK 29 luty 2012, 13:36

3 odpowiedzi

Najlepsza odpowiedź

Jaki jest maksymalny rozmiar klucza tablicy w PHP?

To pytanie jest prawie takie samo. Ale jeśli nie chcesz ufać niczemu nieoficjalnemu, po prostu trzymaj się mniej małych klawiszy. Możesz nawet uzyskać z tego pewne korzyści w zakresie wydajności.

EDYCJA: I jako Podręcznik PHP< /a> mówi:

Uwaga: Nie ma problemu, aby ciąg stał się bardzo duży. PHP nie nakłada żadnych ograniczeń na rozmiar łańcucha; jedynym ograniczeniem jest dostępna pamięć komputera, na którym działa PHP..

5
Community 23 maj 2017, 14:46

Każdy ciąg używany jako klucz w tablicy jest haszowany. Analogicznie do md5() i sha1() to mieszanie redukuje (potencjalnie gigabajty) znaków do znanej długości. w przeciwieństwie do md5() lub sha1() wewnętrzny mechanizm haszujący tablicy przekonwertuje twój łańcuch na liczbę całkowitą, której może następnie użyć do zaadresowania kubełka w tablicy. Tablice PHP nie są tablicami true/real - są wewnętrznie rodzajem Linked HashMap. Biorąc pod uwagę, że wiele ciągów może sprowadzać się do tego samego skrótu, każde wiadro jest samą listą. Jeśli w tym samym zasobniku znajduje się wiele elementów, każdy klucz musi zostać oceniony. Nie trzeba dodawać, że skróty klawiszowe są porównywane szybciej niż 1 MB tekstu.

TL;DR: chociaż PHP nie ogranicza Cię, powinieneś ograniczyć się. Jeśli masz dość długie ciągi, rozważ uruchomienie ich przez md5() lub sha1() (lub jakąkolwiek inną funkcję mieszającą), aby skrócić długość klucza.

10
rodneyrehm 29 luty 2012, 13:45

Czy na pewno odwołujesz się do klucza? czy masz na myśli wartość?

Z tablicami asocjacyjnymi : $array = new array( new array( "klucz"=>"wartość" ) );

.. jeśli chodzi o klucz, myślę, że teoretycznie nie ma ograniczeń co do długości, jednak .. wybieranie długich kluczy nie jest dobrym pomysłem, jeśli chcesz ich często używać ponownie..

Jeśli chodzi o wartości, powinieneś po prostu poszukać ogólnie w tablicach i jakie typy danych są dozwolone i takie tam..

Mam nadzieję że to pomoże..

-2
tycho martins 29 luty 2012, 13:46