Cách so sánh mảng nhiều chiều trong PHP

Trong bài đăng này, chúng tôi sẽ cho bạn thấy PHP so sánh hai mảng và nhận các giá trị khớp không khác nhau, hãy nghe PHP so sánh hai mảng và nhận các giá trị khớp không khác nhau, chúng tôi sẽ cung cấp cho bạn chi tiết để thực hiện

GIẢI PHÁP CHO PHP SO SÁNH HAI Mảng VÀ NHẬN GIÁ TRỊ TRẬN ĐẤU KHÔNG KHÁC

$array1 = array(
	"America",
	"Armenia",
	"Belarus",
	"Cambodia",
	"Denmark",
	"Ethiopia",
	"France",
	"Ghana"
);

$array2 = array(
	"America",
	"Armenia",
	"Belarus",
	"Cambodia",
	"Denmark",
	"Ethiopia",
	"France",
	"Ghana",
	"Russia",
	"Slovakia"
);

$output = array_intersect($array1, $array2);
// Expected Output:
// array("Russia", "Slovakia");
$output = array_intersect($array1, $array2);

nếu bạn đang cố gắng so sánh hai mảng và chỉ nhận được các giá trị tồn tại trên cả hai mảng, nhưng thật không may, bạn không thể tìm thấy đúng mảng với array_diff()

để sử dụng giải pháp có thể array_intersect() thay vì array_diff()

Hàm array_intersect() trong PHP

So sánh các giá trị của hai mảng và trả về kết quả khớp

Định nghĩa và cách sử dụng

Hàm array_intersect() so sánh giá trị của hai (hoặc nhiều) mảng và trả về giá trị khớp

Hàm này so sánh các giá trị của hai hoặc nhiều mảng và trả về một mảng chứa các mục từ mảng1 có trong mảng2, mảng3, mảng4, v.v.

$array1 = array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
$array2 = array("a"=>"red","b"=>"black","h"=>"yellow");
$array3 = array("e"=>"red","f"=>"black","g"=>"purple");

$output = array_intersect($array1,$array2,$array3);
print_r($output);

Hy vọng mã và bài đăng này sẽ giúp bạn triển khai PHP so sánh hai mảng và nhận các giá trị phù hợp không khác biệt. nếu bạn cần bất kỳ trợ giúp hoặc bất kỳ phản hồi nào, hãy đưa ra trong phần bình luận hoặc bạn có ý tưởng hay về bài đăng này, bạn có thể đưa ra phần bình luận. Nhận xét của bạn sẽ giúp chúng tôi giúp bạn nhiều hơn và cải thiện chúng tôi. chúng tôi cũng sẽ cung cấp cho bạn loại bài đăng thú vị hơn này trong phần nổi bật, Để có bài đăng và mã thú vị hơn Hãy tiếp tục đọc blog của chúng tôi

Câu trả lời này giải thích cách thực hiện đúng cách băm mật khẩu trong PHP. Tuy nhiên, đây là cách bạn sẽ mã hóa/giải mã

$key = 'password to (en/de)crypt';
$string = ' string to be encrypted '; // note the spaces

để mã hóa

$iv = mcrypt_create_iv(
    mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC),
    MCRYPT_DEV_URANDOM
);

$encrypted = base64_encode(
    $iv .
    mcrypt_encrypt(
        MCRYPT_RIJNDAEL_128,
        hash('sha256', $key, true),
        $string,
        MCRYPT_MODE_CBC,
        $iv
    )
);

để giải mã

$data = base64_decode($encrypted);
$iv = substr($data, 0, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC));

$decrypted = rtrim(
    mcrypt_decrypt(
        MCRYPT_RIJNDAEL_128,
        hash('sha256', $key, true),
        substr($data, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC)),
        MCRYPT_MODE_CBC,
        $iv
    ),
    "\0"
);

Cảnh báo. Ví dụ trên mã hóa thông tin, nhưng nó không xác thực bản mã để tránh giả mạo. Bạn không nên dựa vào mã hóa chưa được xác thực để bảo mật, đặc biệt là vì mã được cung cấp dễ bị tấn công bởi tiên tri đệm

Theo mặc định, các phép so sánh là nghiêm ngặt, nhưng bạn có thể chỉ định rằng bạn muốn thực hiện một phép so sánh lỏng lẻo bằng cách chuyển một giá trị boolean làm tham số thứ ba cho phương thức

$output = array_intersect($array1, $array2);
2 hoặc gọi phương thức
$output = array_intersect($array1, $array2);
3

Hàm array_diff_assoc() so sánh các khóa và giá trị của hai (hoặc nhiều) mảng 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 (hoặc nhiều) mảng và trả về một mảng chứa các mục từ mảng1 không có trong mảng2 hoặc mảng3, v.v.

Tôi có 2 nguồn dữ liệu. Nguồn dữ liệu A cần thông tin được cập nhật thường xuyên. Nó nhận được thông tin cập nhật từ nguồn dữ liệu B. Có hàng ngàn bản ghi liên quan ở đây vì vậy tôi đang cố gắng hạn chế số lượng truy vấn MySql càng nhiều càng tốt. Tôi đã quản lý để đưa cả hai nguồn dữ liệu này vào các mảng đa chiều riêng biệt

Tôi cần viết một hàm sẽ so sánh nguồn dữ liệu A với nguồn dữ liệu B và, trong một mảng mới, có các khóa cần thay đổi chỉ với các giá trị khác nhau

Đây là một hình ảnh

Mảng đa chiều từ nguồn dữ liệu A

Array
(
    ["product_a"] => 
        Array (
                       ["description"]=>"Product A is Large"
                       ["color"]=>"Red"
                       ["quantity"]=>5
                  )
    ["product_b"] => 
        Array (
                       ["description"]=>"Product B is Small"
                       ["color"]=>"Blue"
                       ["quantity"]=>20
                  )
    ["product_c"] => 
        Array (
                       ["description"]=>"Product C has batteries included"
                       ["color"]=>"Green"
                       ["quantity"]=>7
                  )
)

Mảng đa chiều từ nguồn dữ liệu B

Array
(
    ["product_a"] => 
        Array (
                       ["description"]=>"Product A is Large"
                       ["color"]=>"Yellow"
                       ["quantity"]=>8
                  )
    ["product_b"] => 
        Array (
                       ["description"]=>"Product B is Small"
                       ["color"]=>"Blue"
                       ["quantity"]=>20
                  )
    ["product_c"] => 
        Array (
                       ["description"]=>"Product C is made of Wax"
                       ["color"]=>"Green"
                       ["quantity"]=>7
                  )
)

Đây là những gì mảng mới sẽ trông như thế nào

________số 8

Tôi biết hàm này có thể sử dụng một số dạng của hàm php được tích hợp trong hàm array_diff và tôi chắc chắn rằng có liên quan đến đệ quy nhưng tôi không thể tìm ra cách thực hiện việc này trong suốt cuộc đời mình

Tôi là một lập trình viên mới bắt đầu nên mọi trợ giúp sẽ được đánh giá cao

php

0 0

Chia sẻ

  • 3 Cộng tác viên
  • 3 Trả lời
  • 5K Lượt xem
  • 1 năm Khoảng thời gian thảo luận
  • Bài đăng mới nhất 12 năm trước Bài đăng mới nhất bởi wcgoran

Cách so sánh mảng nhiều chiều trong PHP

BHance 0 Áp phích dành cho người mới

13 năm trước

Tôi nghĩ rằng tôi đã tìm ra nó và nó cực kỳ đơn giản (gần như quá đơn giản)

Tôi có hai cách để làm điều đó mặc dù

Cách này dường như thực hiện nhanh hơn khoảng 10% theo điểm chuẩn của tôi

foreach ($products as $k1 => $v1) {
	if (array_diff($excel_items[$k1], $products[$k1])){
		$update_items[$k1] = array_diff($excel_items[$k1], $products[$k1]);
	}
}

Cách này cũng được nhưng hơi chậm

$output = array_intersect($array1, $array2);
0

Trong cả hai, tôi chỉ lặp qua các khóa của nguồn dữ liệu A và sử dụng array_diff, kiểm tra sự khác biệt trong nguồn dữ liệu B khác. Nếu có sự khác biệt, tôi thêm nó vào một mảng mới

Chức năng đầu tiên hoạt động tốt nhưng tôi không thích rằng tôi phải chạy chức năng array_diff hai lần trên mỗi lần lặp lại (phải có một cách rõ ràng hơn để làm điều đó)

Với chức năng thứ hai, tôi thực hiện array_diff (nó trả về một mảng trống nếu không có gì khác biệt mà tôi cho là bất thường) và sau đó chỉ cần bỏ đặt khóa nếu nó trống. Tôi thích cách này hơn nhưng thử nghiệm hiệu suất lại cho tôi biết điều ngược lại

Bất kỳ cách nào tôi có thể cải thiện điều này?

Có cách nào để làm điều này tốt hơn?

0 0

Chia sẻ

Cách so sánh mảng nhiều chiều trong PHP

visser 0 Áp phích dành cho người mới

13 năm trước

$output = array_intersect($array1, $array2);
0

Điều này đang hoạt động rất tốt, làm cách nào tôi có thể thêm hỗ trợ cho khóa RRP và Chi phí trên cả Mảng A và Mảng B (i. e. nếu RRP hoặc Chi phí của sản phẩm thay đổi thì mặt hàng đó sẽ được thêm vào $update_items)

Làm cách nào để tìm kiếm mảng nhiều chiều trong PHP?

Để xử lý việc tìm kiếm một mảng nhiều chiều, bạn có thể sử dụng câu lệnh foreach hoặc hàm array_search() . Một mảng đa chiều PHP có thể được tìm kiếm để xem nó có giá trị nhất định hay không. Hãy xem một ví dụ về việc thực hiện tìm kiếm.

Làm cách nào để khớp hai mảng trong PHP?

Hàm array_intersect() so sánh giá trị của hai (hoặc nhiều) mảng và trả về kết quả khớp. Hàm này so sánh các giá trị của hai hoặc nhiều mảng và trả về một mảng chứa các mục từ mảng1 có trong mảng2, mảng3, v.v.

Chúng ta có thể sử dụng vòng lặp foreach cho mảng đa chiều trong PHP không?

Chúng ta có thể sử dụng nhiều câu lệnh foreach để lặp qua các mảng nhiều chiều .

Làm cách nào để so sánh mảng với chuỗi trong PHP?

Nếu bạn muốn kiểm tra xem một phần cụ thể của Chuỗi có nằm trong mảng hay không, bạn sẽ cần phải sử dụng substr() để tách phần đó của chuỗi rồi sử dụng in_array( . .