new version with array_diff_key