Если существуют какие-то ограничения для ключей массива в PHP? Длина? Не приемлемые строки?
В официальной документации найдено только это, но информации о ограничениях ключей нет.
Ключ может быть целым числом или строкой. Если ключ является стандартным представлением целого числа, он будет интерпретироваться как таковой (т.е. «8» будет интерпретирован как 8, а «08» будет интерпретирован как «08»). Поплавки в ключе усекаются до целого. Индексированные и ассоциативные типы массивов являются одним и тем же типом в PHP, который может содержать как целые, так и строковые индексы. *
- PHP Array - превращение значений массива в ключи
- openssl_pkey_new () throwing errors - Правильная настройка openssl.cnf для php
- Выравнивание ключей массива PHP
- Search_array во вложенных массивах
- OpenSSL не будет создавать закрытые ключи?
- Возможно ли иметь шифрование с несколькими закрытыми ключами (PHP)?
Каков максимальный размер ключа для массива в PHP?
Этот вопрос почти то же самое. Но если вы не хотите доверять чему-либо неофициальному, просто придерживайтесь менее маленьких клавиш. Вы даже можете получить некоторые преимущества в производительности.
EDIT: И как написано в руководстве PHP :
Примечание. Нет ничего сложного в том, чтобы строка стала очень большой. PHP не накладывает ограничений на размер строки; единственным ограничением является доступная память компьютера, на котором работает PHP.
Любая строка, используемая в качестве ключа в массиве, хэшируется. Аналогично md5 () и sha1 () это хеширование уменьшает (потенциально гигабайт) символов до известной длины. в отличие от md5 () или sha1 () внутренний механизм хэширования массива преобразует вашу строку в целое число, которое затем может использовать для обращения к ведру внутри массива. Массивы PHP не являются истинными / реальными массивами – они являются своего рода Linked HashMap внутренне. Учитывая, что несколько строк могут сводиться к одному и тому же хэшу, каждое ведро представляет собой список. Если в одном и том же ведре имеется несколько элементов, каждый ключ должен быть оценен. Само собой разумеется, что короткие клавиши сравниваются быстрее, чем 1 МБ текста.
TL; DR: хотя вы не ограничены PHP, вы должны ограничить себя. Если у вас довольно длинные строки, попробуйте запустить их через md5 () или sha1 () (или любую другую функцию хеширования, фактически), чтобы уменьшить длину ключа.
вы уверены, что имеете в виду ключ? или вы имеете в виду ценность?
с ассоциативными массивами: $ array = новый массив (новый массив («ключ» => «значение»));
.. что касается ключа, который, как мне кажется, в теореме, нет ограничений на длину, но .. использование длинных клавиш – не очень хорошая идея, если вы захотите многократно их создать.
что касается значений, вы должны просто взять добычу на массивы вообще и какие типы данных разрешены и прочее ..
надеюсь это поможет..