php - array_keys vs array_flip 基准测试请求
问题描述
对不起一个愚蠢的问题,更像是一个请求..一直在使用array_keys
但突然换掉它array_flip
并没有发现任何区别,有人可以对其进行基准测试吗?::
解决方案
这两个函数执行不同的任务。您需要与其关联值交换的密钥吗?或者你只需要所有的钥匙?使用完成任务所需的任何一个。
几乎总是有很多路线可以达到相同的结果,但是(例如)数组顺序是否改变可能并不重要,那么不要使用它会翻转的那个(理论上/推测)需要更长的时间,它不是完成任务的正确工具。
如果您有大量数据集和/或它的许多迭代,并且这些东西与您相关,那么您应该设置基准系统来测试这个场景和可能的其他场景。如果不是,那么像大多数应用程序一样,这些考虑因素是微优化,并且工具/功能的选择应该适合任务 - 并适合您的代码库或框架、编码风格等。
选择适合任务的也可以使意图更加清晰。因此,例如,如果您不需要翻转数组,即使该函数稍微快一点,也请使用您实际需要的那个,否则未来的重构可能会让某人在您选择使用时有些摸不着头脑array_flip()
。
array_flip — 将所有键与它们在数组中的关联值交换
$input = array("oranges", "apples", "pears");
$flipped = array_flip($input);
Array
(
[oranges] => 0
[apples] => 1
[pears] => 2
)
array_keys — 返回数组的所有键或键的子集
$array = array(0 => 100, "color" => "red");
print_r(array_keys($array));
Array
(
[0] => 0
[1] => color
)
你需要翻转它们吗?或者你只需要钥匙?如果不需要翻转则使用后者,否则使用前者。
数组翻转也说明
如果一个值多次出现,最新的键将被用作它的值,所有其他的都将丢失。
也许这对你来说是个问题?也许没关系?
推荐阅读
- java - NoClassDefFoundError - 使用 Mockito 和 PowerMock 时的 org/mockito/exceptions/Reporter
- elasticsearch - 从 Elastic-Stack 中获取价值
- prolog - Prolog 无法使用回车符写入元素
- azure - Azure 应用程序配置 - 如何设置机密
- r - 循环中的二次回归
- twig - symfony 4:树枝样式表和路径的问题
- vb.net - PostAsync 不是 HttpClient 的成员
- azure - Azure 服务总线订阅客户端轮询间隔
- python - 值错误:无法将字符串转换为浮点数:
- javascript - 打印 iframe 不包含 CSS