💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در ۵ آذر ماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ hamid mostafazadeh
نحوه مقایسه 2 آرایه تو در تو
امیر صالحی حل شده توسط امیر صالحی

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

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

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

سلام و احترام

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

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 ) )

 

موفق باشید

بهترین پاسخ
امیر صالحی ۰۸ بهمن ۱۳۹۹، ۱۹:۱۳