PHP में array_diff() फ़ंक्शन सरणियों के मानों (values) की आंतरिक तुलना (===) करके अंतर लौटाता है। कुंजियों की तुलना नहीं की जाती। पहली सरणी के वे मान लौटाए जाते हैं जो अन्य किसी सरणी में नहीं हैं।
सिंटैक्स (Syntax)
array_diff(array $arr1, array $arr2, array ...$arrays): array
पैरामीटर्स (Parameters)
$arr1 − आधार सरणी।
$arr2 − तुलना के लिए दूसरी सरणी।
$arrays (वैकल्पिक) − अतिरिक्त सरणियाँ।
रिटर्न वैल्यू (Return Value)
पहली सरणी के वे मान वाली सरणी लौटाता है जो अन्य सरणियों में नहीं हैं। कुंजियाँ पहली सरणी से संरक्षित रहती हैं।
उदाहरण (Examples)
उदाहरण 1: मूल उपयोग
<?php
$arr1 = array("p" => "steve", "q" => "david", "r" => "peter");
$arr2 = array("s" => "steve", "t" => "amy");
$result = array_diff($arr1, $arr2);
print_r($result);
?>
आउटपुट
Array
(
[q] => david
[r] => peter
)
"steve" दोनों में है इसलिए बाहर। "david", "peter" केवल arr1 में।
उदाहरण 2: संख्यात्मक सरणी
<?php $arr1 = [1, 2, 3, 4, 5]; $arr2 = [3, 4]; print_r(array_diff($arr1, $arr2)); // [0=>1, 1=>2, 4=>5] ?>
उदाहरण 3: प्रकार-संवेदनशील (===)
<?php $arr1 = [1, "1", true, 2]; $arr2 = [1, 2]; print_r(array_diff($arr1, $arr2)); // "1" (string) और true (bool) arr2 में नहीं (=== तुलना) ?>
आउटपुट
Array
(
[1] => 1
[2] => 1
)
उदाहरण 4: तीन सरणियों के साथ
<?php $arr1 = [1, 2, 3, 4, 5]; $arr2 = [2, 4]; $arr3 = [3]; $result = array_diff($arr1, $arr2, $arr3); print_r($result); // [0=>1, 4=>5] ?>
प्रदर्शन और विकल्प
बड़ी सरणियों के लिए O(n*m)। तेज़ विकल्प:
<?php // कुंजियों को मान बनाकर isset() उपयोग (O(n)) $flipped = array_flip($arr2); $result = array_filter($arr1, fn($v) => !isset($flipped[$v])); ?>