Hướng dẫn write a php function to compares two multidimensional arrays and returns the difference - viết hàm php để so sánh hai mảng nhiều chiều và trả về sự khác biệt

Cập nhật lần cuối vào ngày 19 tháng 8 năm 2022 21:50:37 (UTC/GMT +8 giờ)

Mảng PHP: Tập thể dục-57 với giải pháp

Viết hàm PHP để so sánh hai mảng đa chiều và trả về sự khác biệt.

Giải pháp mẫu:

Mã PHP:

<?php
function key_compare($a,$b)
{
    if($a===$b)        
    return 0;
    return($a>$b)?1:-1;
}
function multidimenssional_array_diff($arr1, $arr2)
{
return array_diff_uassoc($arr1['c'], $arr2['c'],"key_compare");
}
//multidimenssional arrays
$color1=array('a'=>'White','b'=>'Red','c'=>array('a'=>'Green','b'=>'Blue','c'=>'Yellow'));
$color2=array('a'=>'White','b'=>'Red','c'=>array('a'=>'White','b'=>'Red','c'=>'Yellow'));
print_r(multidimenssional_array_diff($color1, $color2));
?>

Đầu ra mẫu:

Array                                                       
(                                                           
    [a] => Green                                            
    [b] => Blue                                             
)

Flowchart:

Hướng dẫn write a php function to compares two multidimensional arrays and returns the difference - viết hàm php để so sánh hai mảng nhiều chiều và trả về sự khác biệt

Trình chỉnh sửa mã PHP:

Đóng góp mã và nhận xét của bạn thông qua Disqus.

Trước: Viết tập lệnh PHP để tạo một mảng hai chiều (4x4), được khởi tạo thành 10.DEXT: Viết tập lệnh PHP để kết hợp (sử dụng một mảng cho các phím và một mảng khác cho hai mảng được chỉ định. Write a PHP script to create a two-dimensional array (4x4), initialized to 10.
Next: Write a PHP script to combine (using one array for keys and another for its values) the specified two arrays.

PHP: Lời khuyên trong ngày

PHP: Cách tốt nhất để cho phép các plugin cho ứng dụng PHP.

Bạn có thể sử dụng một mẫu quan sát viên. Một cách chức năng đơn giản để thực hiện điều này:

<?php

/** Plugin system **/

$listeners = array();

/* Create an entry point for plugins */
function hook() {
    global $listeners;

    $num_args = func_num_args();
    $args = func_get_args();

    if($num_args < 2)
        trigger_error("Insufficient arguments", E_USER_ERROR);

    // Hook name should always be first argument
    $hook_name = array_shift($args);

    if(!isset($listeners[$hook_name]))
        return; // No plugins have registered this hook

    foreach($listeners[$hook_name] as $func) {
        $args = $func($args); 
    }
    return $args;
}

/* Attach a function to a hook */
function add_listener($hook, $function_name) {
    global $listeners;
    $listeners[$hook][] = $function_name;
}

/////////////////////////

/** Sample Plugin **/
add_listener('a_b', 'my_plugin_func1');
add_listener('str', 'my_plugin_func2');

function my_plugin_func1($args) {
    return array(4, 5);
}

function my_plugin_func2($args) {
    return str_replace('sample', 'CRAZY', $args[0]);
}

/////////////////////////

/** Sample Application **/

$a = 1;
$b = 2;

list($a, $b) = hook('a_b', $a, $b);

$str  = "This is my sample application\n";
$str .= "$a + $b = ".($a+$b)."\n";
$str .= "$a * $b = ".($a*$b)."\n";

$str = hook('str', $str);
echo $str;
?>

Output:

This is my CRAZY application
4 + 5 = 9
4 * 5 = 20

Notes:

Đối với mã nguồn này, bạn phải khai báo tất cả các plugin của mình trước mã nguồn thực tế mà bạn muốn được mở rộng. Tôi đã bao gồm một ví dụ về cách xử lý các giá trị đơn hoặc nhiều được chuyển cho plugin. Phần khó nhất của việc này là viết tài liệu thực tế liệt kê những đối số nào được truyền cho mỗi lần móc.

Đây chỉ là một phương pháp hoàn thành hệ thống plugin trong PHP. Có những lựa chọn thay thế tốt hơn, hãy xem tài liệu WordPress để biết thêm thông tin.

Tham khảo: https://bit.ly/31BTXXB

Một chức năng tốt hơn hoạt động giống như Array_Diff ban đầu. So sánh Array1 với một hoặc nhiều mảng khác và trả về các giá trị trong Array1 không có trong bất kỳ mảng nào khác.
Compares array1 against one or more other arrays and returns the values in array1 that are not present in any of the other arrays recursively.

    <?php

    function md_array_diff(array $array1, array $array2, array $_ = null) {
        $diff = [];
        $args = array_slice(func_get_args(), 1);

        foreach ($array1 as $key => $value) {
            foreach ($args as $item) {
                if (is_array($item)) {
                    if (array_key_exists($key, $item)) {
                        if (is_array($value) && is_array($item[$key])) {
                            $tmpDiff = md_array_diff($value, $item[$key]);

                            if (!empty($tmpDiff)) {
                                foreach ($tmpDiff as $tmpKey => $tmpValue) {
                                    if (isset($item[$key][$tmpKey])) {
                                        if (is_array($value[$tmpKey]) && is_array($item[$key][$tmpKey])) {
                                            $newDiff = array_diff($value[$tmpKey], $item[$key][$tmpKey]);
                                        } else if ($value[$tmpKey] !== $item[$key][$tmpKey]) {
                                            $newDiff = $value[$tmpKey];
                                        }

                                        if (isset($newDiff)) {
                                            $diff[$key][$tmpKey] = $newDiff;
                                        }
                                    } else {
                                        $diff[$key][$tmpKey] = $tmpDiff;
                                    }
                                }
                            }
                        } else if ($value !== $item[$key]) {
                            $diff[$key] = $value;

                        }
                    } else {
                        $diff[$key] = $value;
                    }
                }
            }
        }

        return $diff;
    }

    $arr1 = [
      "A" => [
        "A1" => ['A1-0', 'A1-1', 'A1-2', 'A1-3'],
        "A2" => ['A2-0', 'A2-1', 'A2-2', 'A2-3'],
        "A3" => ['A3-0', 'A3-1', 'A3-2', 'A3-3']
      ],
      "B" => [
        "B1" => ['B1-0', 'B1-1', 'B1-2', 'B1-3'],
        "B2" => ['B2-0', 'B2-1', 'B2-2', 'B2-3'],
        "B3" => ['B3-0', 'B3-1', 'B3-2', 'B3-3']
      ],
      'C' => 123
    ];

    $arr2 = [
      "A" => [
        "A1" => ['A1-1', 'A1-2', 'A1-3'],
        "A2" => ['A2-0', 'A2-1', 'A2-2', 'A2-3'],
        "A3" => ['A3-0', 'A3-1', 'A3-2']
      ],
      "B" => [
        "B1" => ['B1-0', 'B1-2', 'B1-3'],
        "B2" => ['B2-0', 'B2-1', 'B2-2', 'B2-3'],
        "B3" => ['B3-0', 'B3-1', 'B3-3']
      ]
    ];

    $arr3 = [
      "A" => [
        "A1" => ['A1-0', 'A1-1', 'A1-2', 'A1-3'],
        "A2" => ['A2-0', 'A2-1', 'A2-2', 'A2-3'],
        "A3" => ['A3-0', 'A3-1', 'A3-2']
      ],
      "B" => [
        "B1" => ['B1-0', 'B1-2', 'B1-3'],
        "B2" => ['B2-0', 'B2-1', 'B2-2', 'B2-3'],
        "B3" => ['B3-0', 'B3-1', 'B3-3']
      ]
    ];

    $diff = md_array_diff($arr1, $arr2, $arr3);

    ?>
    Will Output:
    array (size=3)
      'A' =>
          array (size=2)
            'A1' =>
              array (size=1)
                0 => string 'A1-0' (length=4)
            'A3' =>
              array (size=1)
                3 => string 'A3-3' (length=4)
      'B' =>
          array (size=2)
            'B1' =>
              array (size=1)
                1 => string 'B1-1' (length=4)
            'B3' =>
              array (size=1)
                2 => string 'B3-2' (length=4)
      'C' => int 123

Làm thế nào chúng ta có thể tìm thấy sự khác biệt giữa hai mảng đa chiều trong PHP?

Hàm mảng_diff_assoc () so sánh các khóa và giá trị của hai mảng (hoặc nhiều) và trả về sự khác biệt.Hàm này so sánh các khóa và giá trị của hai mảng (hoặc nhiều) và trả về một mảng chứa các mục từ Array1 không có trong Array2 hoặc Array3, v.v.array_diff_assoc() function compares the keys and values of two (or more) arrays, and returns the differences. This function compares the keys and values of two (or more) arrays, and return an array that contains the entries from array1 that are not present in array2 or array3, etc.

Những chức năng PHP nào so sánh các mảng và trả về sự khác biệt?

Hàm mảng_diff () so sánh các giá trị của hai mảng (hoặc nhiều) và trả về sự khác biệt.array_diff() function compares the values of two (or more) arrays, and returns the differences.

Sự khác biệt giữa mảng 2 chiều và mảng đa chiều là gì?

Sự khác biệt: Mỗi mảng 2D là một mảng đa chiều nhưng cách khác là không cần thiết (ví dụ như một mảng 3D cũng là một mảng đa chiều nhưng chắc chắn không phải là 2D).

Php mảng 2 chiều là gì?

Giới thiệu về mảng 2D trong PHP.Một mảng là một tập hợp các yếu tố của bất kỳ kiểu dữ liệu nào.Có nhiều loại dữ liệu trong PHP như chuỗi, số nguyên, boolean, mảng, đối tượng, tài nguyên, v.v.Một mảng 2D là sự kết hợp của các loại dữ liệu này chủ yếu là mảng.a mix of these data types mainly the array.