نحوه مقایسه 2 آرایه تو در تو

پرسیده شده
فعالیت 1193 روز پیش
دیده شده 445 بار
0

سلام 2 تا آرایه داریم یکی a  و یکی b 

هر کدوم از این آرایه ها 2 بعدی هست 

چطوری این 2 آرایه رو با هم مقایسه کنیم و بعد مقادیر متفاوت رو چاپ کنیم ؟ 

فایل پیوست

hamid mostafazadeh
hamid mostafazadeh

8 بهمن 99

0
حذف شده

سلام و احترام

از تابع زیر استفاده کنید

function array_diff_assoc_recursive($array1, $array2)
{
	foreach($array1 as $key => $value)
	{
		if(is_array($value))
		{
			if(!isset($array2[$key]))
			{
				$difference[$key] = $value;
			}
			elseif(!is_array($array2[$key]))
			{
				$difference[$key] = $value;
			}
			else
			{
				$new_diff = array_diff_assoc_recursive($value, $array2[$key]);
				if($new_diff != FALSE)
				{
					$difference[$key] = $new_diff;
				}
			}
		}
		elseif(!isset($array2[$key]) || $array2[$key] != $value)
		{
			$difference[$key] = $value;
		}
	}
	return !isset($difference) ? 0 : $difference;
}

مثال:

$a = [[1,23],[2,2,3,3,32,345,345],[456,4],[123,345]];
$b = [[123, 213],[456,456,457,5,7],[56745,634,56],[123,23]];



function array_diff_assoc_recursive($array1, $array2)
{
	foreach($array1 as $key => $value)
	{
		if(is_array($value))
		{
			if(!isset($array2[$key]))
			{
				$difference[$key] = $value;
			}
			elseif(!is_array($array2[$key]))
			{
				$difference[$key] = $value;
			}
			else
			{
				$new_diff = array_diff_assoc_recursive($value, $array2[$key]);
				if($new_diff != FALSE)
				{
					$difference[$key] = $new_diff;
				}
			}
		}
		elseif(!isset($array2[$key]) || $array2[$key] != $value)
		{
			$difference[$key] = $value;
		}
	}
	return !isset($difference) ? 0 : $difference;
}

print_r(array_diff_assoc_recursive($a, $b));

نتیجه:

Array ( [0] => Array ( [0] => 1 [1] => 23 ) [1] => Array ( [0] => 2 [1] => 2 [2] => 3 [3] => 3 [4] => 32 [5] => 345 [6] => 345 ) [2] => Array ( [0] => 456 [1] => 4 ) [3] => Array ( [1] => 345 ) )

 

موفق باشید

فایل پیوست

امیر صالحی

توسط

امیر صالحی

8 بهمن 99