Tôi có một mảng PHP mà tôi muốn sao chép nhưng chỉ sao chép các phần tử từ mảng có khóa xuất hiện trong mảng khác.Mảng PHP sao chép các phím nhất định, các chức năng tích hợp sẵn? Hiệu suất vòng lặp lồng nhau?
Dưới đây là mảng của tôi:
$data[123] = 'aaa';
$data[423] = 'bbb';
$data[543] = 'ccc';
$data[231] = 'ddd';
$data[642] = 'eee';
$data[643] = 'fff';
$data[712] = 'ggg';
$data[777] = 'hhh';
$keys_to_copy[] = '123';
$keys_to_copy[] = '231';
$keys_to_copy[] = '643';
$keys_to_copy[] = '712';
$keys_to_copy[] = '777';
$copied_data[123] = 'aaa';
$copied_data[231] = 'ddd';
$copied_data[643] = 'fff';
$copied_data[712] = 'ggg';
$copied_data[777] = 'hhh';
tôi có thể chỉ lặp qua mảng dữ liệu như thế này:
foreach ($data as $key => $value) {
if (in_array($key, $keys_to_copy)) {
$copied_data[$key] = $value;
}
}
Nhưng điều này sẽ được diễn ra bên trong một vòng lặp mà là lấy dữ liệu từ kết quả MySQL bộ. Vì vậy, nó sẽ là một vòng lặp lồng nhau trong vòng lặp dữ liệu MySQL. Tôi thường thử và tránh các vòng lồng nhau trừ khi không có cách nào để sử dụng các hàm mảng dựng sẵn của PHP để có được kết quả mà tôi đang tìm kiếm. Nhưng tôi cũng mệt mỏi vì có một vòng lặp lồng nhau trong vòng lặp dữ liệu MySQL, tôi không muốn giữ MySQL treo xung quanh.
Tôi có thể lo lắng về hiệu suất vòng lặp lồng nhau không cần thiết vì tôi sẽ không bao giờ làm điều này cho hơn một trăm hàng trăm dữ liệu và có thể 10 khóa.
Nhưng tôi muốn biết liệu có cách nào để thực hiện điều này với các hàm PHP tích hợp hay không.
Tôi đã xem array_intesect_key()
nhưng điều đó không thực hiện được, vì mảng $keys_to_copy
của tôi có các khóa mong muốn của tôi dưới dạng giá trị mảng thay vì khóa.
Bất kỳ ai có ý tưởng nào?
Chúc mừng, B
Tại sao bạn không sử dụng '$ keys_to_copy' làm vòng lặp chính? – Yoshi