tôi muốn hợp nhất hai mảng với nhau:Làm cách nào để hợp nhất hai mảng bằng cách tiếp nhận các giá trị duy nhất từ mảng thứ hai có cùng khóa với mảng đầu tiên?
$filtered = array(1 => 'a', 3 => 'c');
$changed = array(2 => 'b*', 3 => 'c*');
Trong khi merge nên bao gồm tất cả các yếu tố của $filtered
và tất cả những yếu tố của $changed
rằng có một phím tương ứng trong $filtered
:
$merged = array(1 => 'a', 3 => 'c*');
array_merge($filtered, $changed)
cũng sẽ thêm các phím bổ sung của $changed
vào $filtered
. Vì vậy, nó không thực sự phù hợp.
Tôi biết rằng tôi có thể sử dụng $keys = array_intersect_key($filtered, $changed)
để lấy các khóa tồn tại trong cả hai mảng đã là một nửa công việc.
Tuy nhiên tôi tự hỏi nếu có bất kỳ (bản địa) chức năng có thể làm giảm mảng $changed
thành một mảng với $keys
được chỉ định bởi array_intersect_key
? Tôi biết tôi có thể sử dụng array_filter
với chức năng gọi lại và kiểm tra $keys
trong đó, nhưng có thể có một số hàm thuần túy thuần túy khác chỉ trích xuất các phần tử đó từ một mảng trong đó các khóa có thể được chỉ định?
Tôi hỏi vì các hàm gốc thường nhanh hơn nhiều so với array_filter
với gọi lại.
Liên kết với giao lộ. Nhưng công đoàn sẽ thêm khóa '$ filtering' cũng như AFAIK. Tôi sẽ thử. – hakre
Tôi nghĩ rằng việc thêm các phím của '$ lọc' là điểm ...? – deceze
Jup. Tôi chỉ thử nghiệm nó, lỗi của tôi;). Nó hoạt động khá tốt, chỉ thứ tự của các phím thay đổi, nhưng đó không phải là vấn đề khi tôi có chúng như là một chỉ số, vì vậy ksort thực hiện công việc. Hoàn hảo. Cảm ơn rất nhiều! – hakre