<?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)); /* Output: array ( 'name' => 'Harold', 'occupation' => 'Bus driver', )array ( 'name' => 'Harold', 'occupation' => 'Bus driver', ) */ // 26 * 26 * 6 = 4056, aA1 aA2 aB1 foreach(range('a', 'z') as $char1) foreach(range('A', 'Z') as $char2) foreach(range('1', '5') as $char3) { $key = $char1 . $char2 . $char3; $data1[$key] = $char1 . $char2 . $char3; $data2[$key] = $char1 . $char3 . $char2; } prof_flag('changed_1'); changed_1($data2, $data1); prof_flag('changed_2'); changed_2($data2, $data1); prof_flag("Done"); prof_print(); // SO TimH https://stackoverflow.com/a/29022400/3392762 function prof_flag($str) { global $prof_timing, $prof_names; $prof_timing[] = microtime(true); $prof_names[] = $str; } // Call this when you're done and want to see the results function prof_print() { global $prof_timing, $prof_names; $size = count($prof_timing); for($i=0;$i<$size - 1; $i++) { echo "<b>{$prof_names[$i]}</b><br>"; echo sprintf(" %f<br>", $prof_timing[$i+1]-$prof_timing[$i]); } echo "<b>{$prof_names[$size-1]}</b><br>"; }
You have javascript disabled. You will not be able to edit any code.