【发布时间】:2022-02-21 11:53:34
【问题描述】:
我有一个联系人数组,其中包含一组需要更新的值。我还有一个contactChangeLog 数组,它将保存现有联系人和更新联系人之间的差异。只有更新的密钥需要保存到日志中。所以使用 2 个联系人数组:
$oldContact = array(
'name' => 'Joeahkd',
'address' => '123 Masjdhfin',
'city' => 'Spring',
'state' => 'CA',
'zip' => '90101',
);
$newContact = array(
'name' => 'Joe',
'address' => '123 Main St',
'city' => 'Springville',
'state' => 'CA',
'zip' => '90101',
);
我可以使用 array_diff_assoc()...
$existing = array_diff_assoc($oldContact, $newContact);
$update = array_diff_assoc($newContact, $oldContact);
$diff = array('previous' => $existing, 'new' => $update);
print_r($diff);
但是,我对每个数组进行了两次迭代,而我对大 O 表示法的了解告诉我这是不对的。是否有一种算法更有效的方法来返回更新的键以及现有和更新的值?结果应该是:
$previous = array(
'name' => 'Joeahkd',
'address' => '123 Masjdhfin',
'city' => 'Spring'
);
$updated = array(
'name' => 'Joe',
'address' => '123 Main St',
'city' => 'Springville'
);
【问题讨论】:
标签: php algorithm filtering big-o array-difference