Php 数组_diff_assoc()或foreach()?哪个更快?
我有两个数组,例如带有100+个值的Php 数组_diff_assoc()或foreach()?哪个更快?,php,Php,我有两个数组,例如带有100+个值的$session和$post。我将比较$post数组值与$session数组。如果post不同,则它将被带到结果数组,否则不会 我们可以使用array\u diff\u assoc($post$session)和foreach()。哪一个更快?对于评测,Phil在他的回答中提出了一个很好的方法,但我也将其链接到这里,以防万一: 实际上,您需要知道每种方法的作用。在array_diff_assoc中,在比较每个元素的键/值对之后,返回两个集合之间的差异。然后,
$session
和$post
。我将比较$post
数组值与$session
数组。如果post不同,则它将被带到结果数组,否则不会
我们可以使用
array\u diff\u assoc($post$session)和foreach()。哪一个更快?对于评测,Phil在他的回答中提出了一个很好的方法,但我也将其链接到这里,以防万一:
实际上,您需要知道每种方法的作用。在array_diff_assoc中,在比较每个元素的键/值对之后,返回两个集合之间的差异。然后,它将返回一个数组,其中包含array1中不在array2或array3中的条目,以此类推
在for-each循环中,您需要硬编码相同的函数(假设您需要硬编码)。您需要获取第一个元素,然后在其他数组中查找组合。如果它符合您的要求,您将把它保存到输出数组中,甚至直接打印它
同样的原则也适用,但同样的,这将取决于分析来确定更快的方法。尝试在大量大型阵列上执行此操作,因为在较小规模下差异不明显。我将此作为存根/示例,请编辑或用于分析
<?php
$before = [
'name' => 'Bertie',
'age' => '23'
];
$after = [
'name' => 'Harold',
'age' => '23',
'occupation' => 'Bus driver'
];
function changed_1($after, $before) {
return array_diff_assoc($after, $before);
}
function changed_2($after, $before) {
$changed = [];
foreach($after as $k => $v) {
if(isset($before[$k]) && $before[$k] !== $v)
$changed[$k] = $v;
if(!isset($before[$k]))
$changed[$k] = $v;
}
return $changed;
}
var_export(changed_1($after, $before));
var_export(changed_2($after, $before));
你的问题呢?为什么不试试看哪个更快~@Phil我试过了。PHP_函数看起来比foreach()慢。我在这里放了一些代码,其中包含4000多个条目,所有不同的值(最坏的情况)。忽略其Evaluator上的结果,以不同的方式运行您自己或配置文件。对我来说,阵列的速度更快。
array (
'name' => 'Harold',
'occupation' => 'Bus driver',
)array (
'name' => 'Harold',
'occupation' => 'Bus driver',
)