首页 > 解决方案 > array_keys vs array_flip 基准测试请求

问题描述

对不起一个愚蠢的问题,更像是一个请求..一直在使用array_keys但突然换掉它array_flip并没有发现任何区别,有人可以对其进行基准测试吗?::

标签: php

解决方案


这两个函数执行不同的任务。您需要与其关联值交换的密钥吗?或者你只需​​要所有的钥匙?使用完成任务所需的任何一个。

几乎总是有很多路线可以达到相同的结果,但是(例如)数组顺序是否改变可能并不重要,那么不要使用它会翻转的那个(理论上/推测)需要更长的时间,它不是完成任务的正确工具。

如果您有大量数据集和/或它的许多迭代,并且这些东西与您相关,那么您应该设置基准系统来测试这个场景和可能的其他场景。如果不是,那么像大多数应用程序一样,这些考虑因素是微优化,并且工具/功能的选择应该适合任务 - 并适合您的代码库或框架、编码风格等。

选择适合任务的也可以使意图更加清晰。因此,例如,如果您不需要翻转数组,即使该函数稍微快一点,也请使用您实际需要的那个,否则未来的重构可能会让某人在您选择使用时有些摸不着头脑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
)

你需要翻转它们吗?或者你只需​​要钥匙?如果不需要翻转则使用后者,否则使用前者。

数组翻转也说明

如果一个值多次出现,最新的键将被用作它的值,所有其他的都将丢失。

也许这对你来说是个问题?也许没关系?


推荐阅读