热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PHP中数组的最大密钥大小是多少?-WhatisthemaxkeysizeforanarrayinPHP?

Iamgeneratingassociativearraysandthekeyvalueisastringconcatof1..ncolumns.我正在生成关联数组,键

I am generating associative arrays and the key value is a string concat of 1..n columns.

我正在生成关联数组,键值是1的字符串concat。n列。

Is there a max length for keys that will come back to bite me? If so, I'll probably stop and do it differently.

有最大长度的钥匙会回来咬我吗?如果是这样的话,我可能会停下来,做些不同的事情。

3 个解决方案

#1


73  

It seems to be limited only by the script's memory limit.

它似乎只受脚本的内存限制。

A quick test got me a key of 128mb no problem:

一次快速的测试让我得到一把128mb的钥匙没有问题:

ini_set('memory_limit', '1024M');

$key = str_repeat('x', 1024 * 1024 * 128);

$foo = array($key => $key);

echo strlen(key($foo)) . "
"; echo strlen($foo[$key]) . "
";

#2


14  

There is no practical limit to string size in PHP. According to the manual:

在PHP中,字符串大小没有实际的限制。根据手册:

Note: It is no problem for a string to become very large. PHP imposes no boundary on the size of a string; the only limit is the available memory of the computer on which PHP is running.

注意:字符串变得非常大是没有问题的。PHP对字符串的大小没有限制;唯一的限制是PHP所运行的计算机的可用内存。

It is safe to assume that this would apply to using strings as keys in arrays as well, but depending on how PHP handles its lookups, you may notice a performance hit as strings get larger.

可以假定这也适用于在数组中使用字符串作为键,但是根据PHP处理查找的方式,当字符串变大时,您可能会注意到性能受到的影响。

#3


5  

In zend_hash.h, you can find zend_inline_hash_func() method that can show how to hash key string in PHP, So use key which string length less than 8 characters is better for performance.

在zend_hash。h,您可以找到zend_inline_hash_func()方法,它可以显示如何在PHP中对键字符串进行哈希,因此使用小于8个字符的字符串长度的键对性能更好。

static inline ulong zend_inline_hash_func(char *arKey, uint nKeyLength) {

register ulong hash = 5381;

/* variant with the hash unrolled eight times */
for (; nKeyLength >= 8; nKeyLength -= 8) {
    hash = ((hash <<5) + hash) + *arKey++;
    hash = ((hash <<5) + hash) + *arKey++;
    hash = ((hash <<5) + hash) + *arKey++;
    hash = ((hash <<5) + hash) + *arKey++;
    hash = ((hash <<5) + hash) + *arKey++;
    hash = ((hash <<5) + hash) + *arKey++;
    hash = ((hash <<5) + hash) + *arKey++;
    hash = ((hash <<5) + hash) + *arKey++;
}
switch (nKeyLength) {
    case 7: hash = ((hash <<5) + hash) + *arKey++; /* fallthrough... */
    case 6: hash = ((hash <<5) + hash) + *arKey++; /* fallthrough... */
    case 5: hash = ((hash <<5) + hash) + *arKey++; /* fallthrough... */
    case 4: hash = ((hash <<5) + hash) + *arKey++; /* fallthrough... */
    case 3: hash = ((hash <<5) + hash) + *arKey++; /* fallthrough... */
    case 2: hash = ((hash <<5) + hash) + *arKey++; /* fallthrough... */
    case 1: hash = ((hash <<5) + hash) + *arKey++; break;
    case 0: break;  EMPTY_SWITCH_DEFAULT_CASE()
}
    return hash;   
}

推荐阅读
  • 使用Maven JAR插件将单个或多个文件及其依赖项合并为一个可引用的JAR包
    本文介绍了如何利用Maven中的maven-assembly-plugin插件将单个或多个Java文件及其依赖项打包成一个可引用的JAR文件。首先,需要创建一个新的Maven项目,并将待打包的Java文件复制到该项目中。通过配置maven-assembly-plugin,可以实现将所有文件及其依赖项合并为一个独立的JAR包,方便在其他项目中引用和使用。此外,该方法还支持自定义装配描述符,以满足不同场景下的需求。 ... [详细]
  • Java环境中Selenium Chrome驱动在大规模Web应用扩展时的性能限制分析 ... [详细]
  • 手指触控|Android电容屏幕驱动调试指南
    手指触控|Android电容屏幕驱动调试指南 ... [详细]
  • 本文介绍了如何在iOS平台上使用GLSL着色器将YV12格式的视频帧数据转换为RGB格式,并展示了转换后的图像效果。通过详细的技术实现步骤和代码示例,读者可以轻松掌握这一过程,适用于需要进行视频处理的应用开发。 ... [详细]
  • 本文介绍了UUID(通用唯一标识符)的概念及其在JavaScript中生成Java兼容UUID的代码实现与优化技巧。UUID是一个128位的唯一标识符,广泛应用于分布式系统中以确保唯一性。文章详细探讨了如何利用JavaScript生成符合Java标准的UUID,并提供了多种优化方法,以提高生成效率和兼容性。 ... [详细]
  • React项目基础教程第五课:深入解析组件间通信机制 ... [详细]
  • HBase Java API 进阶:过滤器详解与应用实例
    本文详细探讨了HBase 1.2.6版本中Java API的高级应用,重点介绍了过滤器的使用方法和实际案例。首先,文章对几种常见的HBase过滤器进行了概述,包括列前缀过滤器(ColumnPrefixFilter)和时间戳过滤器(TimestampsFilter)。此外,还详细讲解了分页过滤器(PageFilter)的实现原理及其在大数据查询中的应用场景。通过具体的代码示例,读者可以更好地理解和掌握这些过滤器的使用技巧,从而提高数据处理的效率和灵活性。 ... [详细]
  • 在数据表中,我需要触发一个操作来刷新特定列的数据。例如,对于以下表格:| ID | Name | IsDeleted ||----|-------|-----------|| 1 | test | True || 2 | test2 | False |我希望在点击“更新”按钮时,能够仅刷新选定行的“IsDeleted”列。这将有助于确保数据的实时性和准确性。 ... [详细]
  • 在Ubuntu 13.04系统中,如果希望移除OpenJDK以优化Java环境配置,但尝试卸载`openjdk-7-jre`时遇到了问题。具体命令 `$ sudo apt-get purge openjdk-7-jre` 会显示如下提示信息: ... [详细]
  • PHP中元素的计量单位是什么? ... [详细]
  • 在Android平台中,播放音频的采样率通常固定为44.1kHz,而录音的采样率则固定为8kHz。为了确保音频设备的正常工作,底层驱动必须预先设定这些固定的采样率。当上层应用提供的采样率与这些预设值不匹配时,需要通过重采样(resample)技术来调整采样率,以保证音频数据的正确处理和传输。本文将详细探讨FFMpeg在音频处理中的基础理论及重采样技术的应用。 ... [详细]
  • 深入理解Java中的多态性概念及其应用
    多态是面向对象编程中的三大核心特性之一,与封装和继承共同构成了面向对象的基础。多态使得代码更加灵活和可扩展,封装和继承则为其提供了必要的支持。本文将深入探讨多态的概念及其在Java中的具体应用,帮助读者全面理解和掌握这一关键知识点。 ... [详细]
  • POJ 2482 星空中的星星:利用线段树与扫描线算法解决
    在《POJ 2482 星空中的星星》问题中,通过运用线段树和扫描线算法,可以高效地解决星星在窗口内的计数问题。该方法不仅能够快速处理大规模数据,还能确保时间复杂度的最优性,适用于各种复杂的星空模拟场景。 ... [详细]
  • 在洛谷 P1344 的坏牛奶追踪问题中,第一问要求计算最小割,而第二问则需要找到割边数量最少的最小割。通过为每条边附加一个单位权值,可以在求解最小割时优先选择边数较少的方案,从而同时解决两个问题。这种策略不仅简化了问题的求解过程,还确保了结果的最优性。 ... [详细]
  • 在尝试对从复杂 XSD 生成的类进行序列化时,遇到了 `NullReferenceException` 错误。尽管已经花费了数小时进行调试和搜索相关资料,但仍然无法找到问题的根源。希望社区能够提供一些指导和建议,帮助解决这一难题。 ... [详细]
author-avatar
brucegogo03
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有