对不起,我很傻,更像是一个要求。
一直在使用array_keys
,但突然将其与array_flip
进行了交换,发现没有区别,有人可以对其进行基准测试吗? ::
答案 0 :(得分:1)
这两个功能执行不同的任务。您是否需要将密钥交换为其关联的值?还是只需要所有键?使用完成任务所需的任何一种。
几乎总是有许多路线可以达到相同的结果,但是(例如)也许阵列顺序是否更改并不重要,那么不要使用会翻转的路线(从理论上/推测上)花费更长的时间,这不是完成任务的正确工具。
如果您具有大量数据和/或许多迭代,并且因此这些事情与您相关,那么您应该设置基准系统来测试此场景以及其他场景。如果不是像大多数应用程序那样,则应考虑微观优化,并且应该根据任务选择工具/功能,并使其适合您的代码库或框架,编码风格等。
选择适合任务的内容也会使意图更加清晰。因此,例如,即使您不需要翻转数组,即使该函数稍微快一点,也请使用您实际需要的函数,否则将来的重构可能会让某人在选择使用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
)
您需要翻转它们吗?还是只需要钥匙?如果不需要翻转,则使用后者,否则使用前者。
数组翻转也说明
如果某个值多次出现,则将最新的键用作其值,所有其他键都将丢失。
也许这对您来说是个问题?也许没关系吗?