PHP 数组转换为对象的效率?

2023-12-03

据我了解,PHPstdClass当代码嵌套得足够深以至于它实际上很重要时,对象通常比数组更快。如果我通过类型转换来定义,效率会受到怎样的影响stdClass飞行中的对象:

$var = (object)array('one' => 1, 'two' => 2);

如果执行此操作的代码将被执行很多次,我最好显式定义$var作为对象:

$var = new stdClass();
$var->one = 1;
$var->two = 2;

差异可以忽略不计吗,因为我将访问$var从那时起作为一个对象,无论如何?

Edit:

stdClass 是我在这里需要的数据类型。我不关心是否应该使用数组或者是否应该使用 stdClass 对象;我更关心是否使用(object)array(....)实例化 a 的简写stdClass是高效的。是的,这是可能被执行数千次的代码。


你理解错了。对象并不比数组“快得多”。事实上,通常情况恰恰相反,因为数组不存在继承(和可见性查找)问题。当然,在某些特定情况下,您可以显示出明显的显着增益/损失,但在一般情况下,数组往往会更快......

使用语义正确的工具。不要因为认为对象更快而避免使用数组。当有意义时使用结构。有时,用对象替换数组是有意义的(例如,当您想要严格强制执行数组中的类型时)。但这不是其中之一。即便如此,您也不会用 STDClass 替换 array() ,而是用自定义类(可能扩展的类)替换它ArrayObject或者至少实现Iterator and ArrayAccess接口)。不同的数据结构存在是有原因的。如果使用对象而不是数组更好,那么我们不是都使用对象来代替吗?

不必担心诸如“投射速度更快”之类的微观优化。它是几乎总是不。编写可读、正确的代码。如果遇到问题就优化一下...

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP 数组转换为对象的效率? 的相关文章

  • 动态_cast的性能?

    在阅读问题之前 这个问题不是关于它有多大用处dynamic cast 这只是关于它的性能 我最近开发了一个设计 其中dynamic cast被大量使用 与同事讨论时 几乎每个人都这么说dynamic cast不应该使用 因为它的性能很差 这
  • 分析多层、分布式 Web 应用程序(服务器端)

    我想profile http en wikipedia org wiki Profiling 28computer programming 29来自服务器 PoV 的复杂 Web 应用程序 根据上面的维基百科链接和堆栈溢出profiling
  • 这些加密算法有什么区别?

    两者有什么区别MCRYPT RIJNDAEL 128 MCRYPT RIJNDAEL 256 MCRYPT BLOWFISH等等 哪一种最适合网络数据传输 Rijandel 是 AES 的另一个名称 AES 是当前的 一个好的标准 算法 数
  • 如何在 PHP 中正确分割路径

    执行以下操作的最佳方法是什么 我通过 AJAX 请求获取路径 e g dir1 dir2 dir3 dir4 我需要在我的网页上这样展示它 dir1 gt gt dir2 gt gt dir3 gt gt dir4 它们每个都是 html
  • PHP 警告 ZipArchive::extractTo():权限被拒绝

    我创建了一个应用程序 它使用 ZipArchive 类 php 中的标准 中的方法 extractTo 并在 Windows 7 上的本地主机 apache 服务器上对其进行了测试 没有任何问题 但是当我在一些unix生产服务器上尝试过它之
  • mongoose 查询:通过 id 在数组中查找对象

    我怎样才能在此 Schema 中通过 id 找到图像 我有用户的 id 和我正在寻找的图像的 id 执行此操作的最佳方法是什么 在这种情况下 所有图像是否具有不同的 id 或者它们是否可以具有相同的 id 因为它们不属于同一用户 我的架构如
  • Django:将博客条目查看次数增加一。这有效率吗?

    我的索引视图中有以下代码 latest entry list Entry objects filter is published True order by date published 10 for entry in latest ent
  • 如何实现具有LinkedHashMap类似功能的ConcurrentHashMap?

    我用过LinkedHashMap with accessOrdertrue 并同时允许最多 500 个条目作为数据的 LRU 缓存 但由于可扩展性问题 我想转向一些线程安全的替代方案 ConcurrentHashMap在这方面似乎不错 但缺
  • WHERE 子句或 ON 子句中的 INNER JOIN 条件?

    我今天输错了一个查询 但它仍然有效并给出了预期的结果 我的意思是运行这个查询 SELECT e id FROM employees e JOIN users u ON u email e email WHERE u id 139840 但我
  • 如何在javascript中使用自动递增id?

  • Propel Query 中的动态表名称

    我想知道您是否可以使 propel 查询的表名称动态化 有点像变量 一个例子类似于 DynamicVar Query create 我让它在 ifs 中工作 就像下面的例子一样 但如果更动态地制作 可以删除相当多的行 这些表的设置都是相同的
  • 我可以显示我在 PHP 中设置的所有 cookie 吗?

    我正在尝试诊断 cookie 中的错误 但 cookie 的名称不是应有的名称 PHP 有没有办法打印我的域设置的所有 cookie 你有没有尝试过 print r COOKIE
  • 如何在 joomla 模块中通过 javascript 发送输入文件类型

    我想将带有 javascript 的文件发送到 php 文件 我的 php 文件中有这个表单
  • 疯狂的 crond 行为。不断使 bash 进程失效

    我有一个看起来像这样的 crontab SHELL bin bash PATH sbin bin usr sbin usr bin MAILTO root HOME 0 59 var www html private fivemin zda
  • 在 MySQL 中搜索多个单词

    我使用 HTML 表单来允许用户查找数据库表中的条目
  • Perl 中令人困惑的文件句柄

    一直在使用以下脚本 但仍然无法理解两种不同 类型 的文件句柄形式背后的含义 任何见解将不胜感激 usr bin perl use warnings use strict open FH example txt or die while
  • 解析 PHP 响应:未捕获的语法错误:意外的标记 <

    我正在使用 AJAX 来调用 PHP 脚本 我唯一需要从响应中解析的是脚本生成的随机 ID 问题是 PHP 脚本会引发许多错误 这些错误实际上很好 不会妨碍程序功能 唯一的问题是当我跑步时 parseJSON response I get
  • WordPress 事件按元生效日期排序

    我在获取参数数组以按 Wordpress 中的日期对事件列表进行排序时遇到一些问题 我在 Stack Overflow 和其他地方找到了几个建议的解决方案 但经过大量的试验和错误后 这些解决方案似乎都不起作用 这没什么花哨的 而且应该比这容
  • 无法在 Centos 上安装 php-mysqli 扩展

    我正在尝试将 mysqli 扩展安装到 php yum install php mysqli 我收到下一个错误 Transaction Check Error file usr share mysql charsets Index xml
  • Laravel 5 注销特定用户

    在我的 laravel 5 应用程序中 有一个功能允许具有管理员角色的用户重置非管理员的任何人的密码 但这不会强制该人注销并再次登录 更改密码后如何强制用户注销 我没有对用于验证用户身份或任何内容的中间件进行任何更改 我不知道它是否有效 但

随机推荐

  • 为什么我的测试失败并出现 System.Security.VerificationException?

    我正在将我的一个项目从 VS2008 迁移到 VS2010 现在 当我运行测试工具时 我将解决方案中的所有项目都转换为 NET 4 0 客户端配置文件 几乎所有测试都会失败 但出现以下异常 系统 安全 验证异常 操作可能会破坏稳定 运行 我
  • SSIS XMLSource 在 XML 变量中仅看到空值

    我有一个带有引用 XML 变量的 XMLSource 的数据流任务 DataFlow 任务确实识别出变量中有 x 行 但它只在每行中看到空值 xml变量值
  • 如何向 dom 对象添加 xml 标头

    我正在使用 Python 的 xml dom minidom 但我认为这个问题对于任何 DOM 解析器都有效 我的原始文件在开头有这样一行 这似乎不是 dom 的一部分 所以当我执行 dom toxml 之类的操作时 生成的字符串在开头没有
  • iOS 获取 UIImageView 图像的可见部分

    我正在尝试获取可见部分UIImage从一个UIImageView UIImageView占据整个屏幕 添加了捏合和平移手势UIImageView 因此 用户可以平移 缩放图像视图 平移 缩放后 我只想裁剪图像视图的可见部分 我尝试了很多方法
  • 如何在运行 Gingerbread 的 root NexusOne 上安装 sqlite3

    我的根基是经营姜饼的纽带 但就像下面的帖子一样 我找不到 sqlite3 并且想在 Nexus One 上安装 sqlite3 当我尝试使用 adb shell 打开数据库时 为什么在已 root 的 Nexus One 上收到 sqlit
  • 如何在制表器中创建多选标题过滤器?

    多年来 这个问题在 Tabulator GitHub 存储库中以各种形式被多次提出 以下是一些例子 https github com olifolkerd tabulator issues 527 https github com olif
  • 如何在.Net Core应用程序中读取web.config文件

    我创建了一个 Net Core API 并引用了一个 Net 框架应用程序 引用的应用程序连接到数据库 其连接字符串存储在 web config 文件中 string CONNSTR ConfigurationManager Connect
  • 从 Facebook Ads API 获取指标

    我无法从 Facebook API 获取以下指标 我如何从 Facebook Ads API 计算出现在 Facebook 自己的广告界面中的这些指标 Reach 社会影响力 频率 CPC CPM 当您获得广告组 ID 后 您必须发出 AP
  • ffmpeg未知关键字处理输入时发现无效数据

    我有一个文件ffmpeg list of files txt与内容 file Output 0 forces vs radii pdf file Output 1 forces vs radii pdf file Output 2 forc
  • 添加不同长度的熊猫列

    我在 pandas 中添加列时遇到问题 我有DataFrame 维度是nxk 在这个过程中 我需要添加维度为 mx1 的列 其中 m 1 n 但我不知道 m 当我尝试这样做时 df Name column data type data li
  • 什么时候使用括号,什么时候不使用?

    我怎么能说 var myFunction function setTimeout myFunction 1000 myFunction 为什么函数会调用setTimeout不需要括号 但最后一行需要吗 Nutshell myFunction
  • 确定两个 360x180 等距柱状全景图像之间的相机旋转

    我有 n 帧 360x180 全景图像 我想根据两个连续图像之间的比较来确定相机的旋转 对于这个项目 可以安全地假设图像中可见的所有特征都在无穷远 我 今天 是 OpenCV 的新手 肯定需要做更多的阅读 我有一个应用程序可以使用 SIFT
  • 在 Windows 上的软件中关闭 USB 设备的电源

    我想通过 Windows 上的软件重新启动 USB 设备 我正在开发一个小型 USB 电源微控制器 该芯片将在电源循环后恢复到本机行为并允许代码下载 由于我的代码会在出现问题时使设备崩溃 使其忽略所有 USB 命令 因此我必须从系统中物理拔
  • 将带有图像的 HTML5 画布另存为图像

    我正在尝试将带有图像的画布保存为 PNG 但是当我尝试这样做时 var myCanvas document getElementById myCanvas var img document createElement img var ctx
  • 带有自定义视图的 AlertDialog:调整大小以包裹视图的内容

    我在正在构建的应用程序中遇到了这个问题 请忽略所有设计缺陷和缺乏最佳实践方法 这纯粹是为了展示我无法解决的问题的示例 I have DialogFragment它返回一个基本的AlertDialog与定制View设置使用AlertDialo
  • jquery发送post数据而不定义url

    是否可以通过ajax或post发送数据而不定义url 这是我正在尝试工作的代码 gll delete click function var gll gll val var gll string gll split var gll id gl
  • jquery 替换不起作用

    DEMO 你好 我正在尝试删除 JS 中的箭头 但似乎替换不起作用 a class pr page prev Previous a a class pr page next Next a pr page prev text replace
  • 在 Windows 10 TP 上使用 VS-2015 CTP 5 和 Python 3.5a 编译 boost-python 教程

    我正在尝试获取boost python 扩展模块教程在 Windows 10 中使用现代 C 14 编译器 我已经使用 vc 14 VS 2015 CTP 5 下载了最新版本的 boost 1 57 和 python 3 5a 源代码 我使
  • c++ - SendInput() 无法正确管理 Alt 代码

    在我正在开发的程序中 我必须模拟击键 为此我使用SendInput 方法 传递一个向量作为参数 该向量包含作为击键一部分的输入 我当前的代码似乎可以与我正在测试的所有组合正常工作 Alt 代码除外 这就是我目前所做的 Press ALT i
  • PHP 数组转换为对象的效率?

    据我了解 PHPstdClass当代码嵌套得足够深以至于它实际上很重要时 对象通常比数组更快 如果我通过类型转换来定义 效率会受到怎样的影响stdClass飞行中的对象 var object array one gt 1 two gt 2