Hợp nhất PHP

Tôi đang làm một công việc mới và điều thú vị khi làm việc với mã của người khác là bạn thường học được rất nhiều thứ mà bạn chưa biết. Một vài tuần trước, tôi đã tìm ra một cách để hợp nhất các mảng trong PHP bằng toán tử +, thay vì sử dụng các hàm mảng (e. g. array_merge) vì vậy hãy chia sẻ cái này tại đây

Thí dụ

Cách dễ nhất để minh họa điều này là với một ví dụ

Sử dụng toán tử cộng để hợp nhất một mảng thực sự hoạt động tốt nhất với một mảng kết hợp, nếu không, nó sẽ hợp nhất trên các chỉ mục được đánh số, điều này có thể dẫn đến một số kết quả không mong muốn hoặc kỳ lạ

Đây là một vài mảng, với một số phần tử giao nhau và một số phần tử khác nhau

$array1 = array(
    'fruit' => 'apple',
    'vegetable' => 'carrot',
    'drink' => 'water',
    'snack' => 'chips'
);
$array2 = array(
    'fruit' => 'banana',
    'drink' => 'juice',
    'sport' => 'running'
);

Thứ tự ưu tiên khi sử dụng toán tử + để hợp nhất các mảng này là từ trái sang phải. Vì vậy, nếu chúng ta thêm $array1 và $array2 như vậy, 'apple' sẽ được ưu tiên hơn 'banana' đối với phần tử trái cây

Chúng ta đã thấy nhiều chức năng khác nhau để hợp nhất các mảng PHP. Trong bài viết này, chúng ta sẽ xem cách hợp nhất hai mảng có cùng khóa PHP. Mỗi chức năng có một cơ chế khác nhau khi nói đến các phím tương tự. Một số chức năng ghi đè lên các giá trị trong khi các chức năng khác giữ lại các giá trị. Chúng tôi sẽ khám phá các tùy chọn khác nhau. Tuy nhiên, bạn nên đọc về các chức năng mà cuối cùng chúng ta sẽ sử dụng tại đây

  • mảng_merge trong PHP
  • array_merge đệ quy trong PHP
  • mảng_combine trong PHP

Như chúng tôi đã đề cập, mọi chức năng xử lý các phím tương tự khác nhau. Cũng có sự khác biệt giữa khóa số nguyên và khóa chuỗi. Vì vậy, hãy xem các chức năng này và hiểu những điều kỳ quặc liên quan.  

Hợp nhất 2 mảng PHP với cùng mã đề xuất chính Ví dụ

$array1 = ["Emp#1"=>"Franklin","Emp#2"=>"Richard","Emp#3"=>"Jake"];
$array2 = ["Emp#4"=>"Tyson","Emp#2"=>"Narnie","Emp#5"=>"Kylie"];
 
$merged_array = array_merge_recursive($array1, $array2);
 
print_r($merged_array);

/*
OUTPUT
Array
(
    [Emp#1] => Franklin
    [Emp#2] => Array
        (
            [0] => Richard
            [1] => Narnie
        )
 
    [Emp#3] => Jake
    [Emp#4] => Tyson
    [Emp#5] => Kylie
)
*/
Hợp nhất PHP

Hợp nhất 2 mảng có cùng khóa PHP bằng hàm array_merge

PHP array_merge là một chức năng tuyệt vời để hợp nhất các mảng có cùng khóa trong PHP. Tuy nhiên, nó ghi đè lên các giá trị khi khóa là chuỗi, nhưng nó có thể lập chỉ mục lại các khóa số. Đây là một ví dụ với các phím số


$arr1 = [
    0 => "Zero",
    1 => "One",
    2 => "Two",
    3 => "Three",
    4 => "Four",
    5 => "Five"
];
 
$arr2 = [
    0 => "Six",
    1 => "Seven",
    2 => "Eight",
    3 => "Nine",
    4 => "Ten"
];
 
$merged = array_merge($arr1, $arr2);
 
print_r($merged);
 
/*
OUTPUT
Array
(
    [0] => Zero
    [1] => One
    [2] => Two
    [3] => Three
    [4] => Four
    [5] => Five
    [6] => Six
    [7] => Seven
    [8] => Eight
    [9] => Nine
    [10] => Ten
)
*/

thì đấy. Nó đã hợp nhất các mảng với các khóa tương tự bằng cách lập chỉ mục lại chúng. Tuy nhiên, chúng tôi không có đặc quyền tương tự khi khóa là chuỗi. Hãy xác nhận nó thông qua một ví dụ


$array1 = ["Emp#1"=>"Franklin","Emp#2"=>"Richard","Emp#3"=>"Jake"];
$array2 = ["Emp#4"=>"Tyson","Emp#2"=>"Narnie","Emp#5"=>"Kylie"];
 
$merged_array = array_merge($array1, $array2);
 
print_r($merged_array);
 
/*
OUTPUT
Array
(
    [Emp#1] => Franklin
    [Emp#2] => Narnie  
    [Emp#3] => Jake    
    [Emp#4] => Tyson  
    [Emp#5] => Kylie  
)
*/

Thấy. Nó chỉ ghi đè lên “Emp#2”. Thay vì giữ lại cả hai giá trị, nó chỉ ghi đè giá trị trước đó bằng giá trị mới nhất, “Richard” với “Narnie” trong ví dụ. Vì vậy, chúng tôi không muốn mất thông tin do ghi đè và đó là lý do tại sao chúng tôi có một chức năng tuyệt vời khác để giải quyết vấn đề này và đó là chức năng chúng ta sẽ thấy tiếp theo

Cách hợp nhất nhiều mảng PHP với cùng khóa bằng hàm array_merge_recursive

___________ kết hợp đệ quy các mảng. Đệ quy cho phép nó hợp nhất 2 mảng có cùng khóa PHP sao cho nó giữ lại giá trị trong một mảng thay vì ghi đè lên chúng. Hãy xem điều đó trong ví dụ sau

$array1 = ["Emp#1"=>"Franklin","Emp#2"=>"Richard","Emp#3"=>"Jake"];
$array2 = ["Emp#4"=>"Tyson","Emp#2"=>"Narnie","Emp#5"=>"Kylie"];
 
$merged_array = array_merge_recursive($array1, $array2);
 
print_r($merged_array);

/*
OUTPUT
Array
(
    [Emp#1] => Franklin
    [Emp#2] => Array
        (
            [0] => Richard
            [1] => Narnie
        )
 
    [Emp#3] => Jake
    [Emp#4] => Tyson
    [Emp#5] => Kylie
)
*/

Bạn có thể thấy đó là cùng một ví dụ được sử dụng trước đây. Tuy nhiên, array_merge_recursive hợp nhất các mảng có cùng khóa PHP bằng cách nối các giá trị của chúng vào một mảng thay vì ghi đè lên giá trị trước đó bằng giá trị mới nhất, giống như Array_merge đã làm. Thật tuyệt phải không? . Hãy xem điều đó cũng

Tùy chọn 3. Hợp nhất 2 mảng có cùng khóa trong PHP bằng array_combine

PHP array_combine hoạt động hơi khác so với hai chức năng chúng ta đã thấy. Nó nhận một mảng các khóa và giá trị rồi hợp nhất chúng. Tuy nhiên, nó ghi đè giá trị trước đó bằng giá trị mới nhất. Hãy xem làm thế nào

$keys = ["A","B","B","C"];
$values = [1,2,3,4];
 
$combined_arr = array_combine($keys,$values);
 
print_r($combined_arr);
 
/*
OUTPUT
Array      
(
    [A] => 1
    [B] => 3
    [C] => 4
)
*/

Vì vậy, nó không khớp với lần xuất hiện đầu tiên của khóa tương tự với giá trị tương ứng của nó. May mắn thay, chúng tôi có một cách giải quyết cho nó. Hãy cùng kiểm tra nào

function array_combine_($keys, $values){
    $result = array();
 
    foreach ($keys as $i => $k) {
     $result[$k][] = $values[$i];
     }
 
    array_walk($result, function(&$v){
     $v = (count($v) == 1) ? array_pop($v): $v;
     });
 
    return $result;
}

Chức năng này được giải thích chi tiết trong bài viết liên quan. Nếu bạn muốn hiểu sâu về nó, thì hãy đọc bài viết. Nhắc lại ví dụ, nó hợp nhất các mảng có cùng khóa PHP với

/*
OUTPUT
Array      
Array
(
    [A] => 1
    [B] => Array
        (
            [0] => 2
            [1] => 3
        )
 
    [C] => 4
)
*/

Lần này nó giữ lại các giá trị tương ứng với các khóa tương tự. Vì vậy, chúng tôi đã khám phá tất cả các tùy chọn này và đã đến lúc kết thúc bài viết này

Phần kết luận

Trong bài viết này, chúng ta đã thấy nhiều tùy chọn khác nhau để hợp nhất các mảng có cùng khóa PHP. Chúng ta đã xem lại các hàm như array_merge, array_merge_recursive và array_combine. Mỗi chức năng này xử lý việc hợp nhất các mảng với các khóa tương tự khác nhau. Array_merge_recursive có vẻ là tùy chọn khả thi nhất nếu bạn không muốn mất dữ liệu

Tuy nhiên, thực tế này không có nghĩa là hai chức năng kia không có tác dụng. Trên thực tế, một số tình huống có thể yêu cầu ghi đè hơn là giữ lại dữ liệu và đó chính xác là điều mà array_merge thực hiện. Vì vậy, đó là tất cả về bài viết này. Chúng tôi hy vọng bạn đã học được một cái gì đó mới ngày hôm nay. Hãy theo dõi các bài viết và hướng dẫn PHP thú vị hơn

Bạn muốn khám phá thêm các bài hướng dẫn PHP hữu ích?

Chúng tôi có nhiều bài viết thú vị liên quan đến PHP. Bạn có thể khám phá những điều này để tìm hiểu thêm về PHP

Mảng PHP_combine. Cách sử dụng với các ví dụ trong PHP

mảng_merge_recursive. Cách khởi kiện với các ví dụ trong PHP

PHP array_filter. Cách sử dụng với các ví dụ trong PHP

Hợp nhất PHP

Bài viết liên quan

Hợp nhất PHP
Sự khác biệt giữa array_merge và array_merge_recursive trong PHP
Hợp nhất PHP
Cách nối một mảng với một mảng khác trong PHP
Hợp nhất PHP
Sự khác biệt giữa array_combine và array_merge trong PHP
Hợp nhất PHP
Difference between PHP array_merge_recursive vs array_replace_recursive


  • ← Sự khác biệt giữa array_merge và array_merge_recursive trong PHP
  • Sự khác biệt giữa array_walk và array_walk_recursive trong PHP →

Viết mã tốt hơn nhanh hơn

Nhấp vào đây để nhận các bí mật hàng đầu 'Trở thành Rockstar PHP Dev trong 7 ngày' của chúng tôi được gửi đến hộp thư đến của bạn

đăng ký

Hợp nhất PHP

Stephen Phép Lạ

Chào. Tôi hy vọng bạn thích bài viết này. Tôi đã phát triển các trang web và phần mềm một cách chuyên nghiệp trong hơn 20 năm. Tôi bắt đầu FuelingPHP như một cách để đền đáp lại cộng đồng nguồn mở đã giúp tôi có thể sống thoải mái khi xây dựng những thứ tôi yêu thích

Làm cách nào để hợp nhất hai đối tượng trong PHP?

Ví dụ 2. Hợp nhất các đối tượng dùng hàm array_merge() . Để làm theo ví dụ này, hãy tạo một tệp PHP với tập lệnh sau. Ở đây, lớp Tài khoản được sử dụng để in các giá trị của đối tượng được hợp nhất.

Làm cách nào để hợp nhất mảng trong PHP?

Hàm array_merge() trong PHP .
Hợp nhất hai mảng thành một mảng. $a1=mảng("đỏ","xanh"); .
Hợp nhất hai mảng kết hợp thành một mảng. $a1=array("a"=>"đỏ","b"=>"xanh"); .
Chỉ sử dụng một tham số mảng với các khóa số nguyên. $a=array(3=>"đỏ",4=>"xanh");

Làm cách nào để hợp nhất hai mảng có cùng khóa trong PHP?

Hàm array_merge_recursive() hợp nhất một hoặc nhiều mảng thành một mảng. Sự khác biệt giữa hàm này và hàm array_merge() là khi hai hoặc nhiều phần tử mảng có cùng khóa. Thay vì ghi đè các khóa, hàm array_merge_recursive() tạo giá trị dưới dạng một mảng.

Làm cách nào để kết hợp hai mảng với các giá trị duy nhất trong PHP?

Bạn có thể sử dụng hàm PHP array_unique() và hàm PHP array_merge() để hợp nhất hai mảng thành một mảng mà không có giá trị trùng lặp trong .