array_keys vs array_flip基准测试请求

时间:2018-08-07 22:03:18

标签: php

对不起,我很傻,更像是一个要求。 一直在使用array_keys,但突然将其与array_flip进行了交换,发现没有区别,有人可以对其进行基准测试吗? ::

1 个答案:

答案 0 :(得分:1)

这两个功能执行不同的任务。您是否需要将密钥交换为其关联的值?还是只需要所有键?使用完成任务所需的任何一种。

几乎总是有许多路线可以达到相同的结果,但是(例如)也许阵列顺序是否更改并不重要,那么不要使用会翻转的路线(从理论上/推测上)花费更长的时间,这不是完成任务的正确工具。

如果您具有大量数据和/或许多迭代,并且因此这些事情与您相关,那么您应该设置基准系统来测试此场景以及其他场景。如果不是像大多数应用程序那样,则应考虑微观优化,并且应该根据任务选择工具/功能,并使其适合您的代码库或框架,编码风格等。

选择适合任务的内容也会使意图更加清晰。因此,例如,即使您不需要翻转数组,即使该函数稍微快一点,也请使用您实际需要的函数,否则将来的重构可能会让某人在选择使用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_keys —返回数组的所有键或键的子集

$array = array(0 => 100, "color" => "red");
print_r(array_keys($array));

Array
(
    [0] => 0
    [1] => color
)

您需要翻转它们吗?还是只需要钥匙?如果不需要翻转,则使用后者,否则使用前者。

数组翻转也说明

  

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

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