PHP Çok Yönlü diziler Karşılaştırılması

3 Cevap php

Ben de çok boyutlu diziler karşılaştırmak için çalışıyorum, ama sadece array_diff_assoc () kullanamazsınız. Ben karşılaştırmak çalışıyorum diziler hem ilişkisel diziler, ve tuşları aynı sırayla böylece ikisi de sıralanır. Çoğunlukla dizileri yapısı aynıdır. Ben nasıl dizileri saklamak unsurları karşılaştırmak için, ben kimse ben ne yapabilirim biliyor sadece iyi bir değer tutun unsurları karşılaştırabilirsiniz anlamaya gibi olamaz?

Yardımın için teşekkürler!

3 Cevap

Bir user contributed note sizin için soruyorsun yaptığı gibi array_diff_assoc() gibi görünüyor için manuel sayfasında var.

Onlar (ne özellikle farklı olup) farklı eğer çalışıyorum sadece görmek için eğer böyle bir şey deneyebilirsiniz:

 return serialize($array1) == seralize($array2);

Bu size iki dizilerin eşitliği üzerinde bir yea veya NEAH verecek.

Bu, onlar eşit eğer görmek isteyip açık değil, ya da aslında farklar nelerdir bir çıkış istiyorum.

O eski ise, o zaman bir özyinelemeli fonksiyonu ile, bunu uygun şekilde yapabilirsiniz:

$array1 = array('a' => 1, 'b' => 2, 'c' => array('ca' => 1, 'cb' => array('foo')));
$array2 = array('a' => 1, 'b' => 2, 'c' => array('ca' => 1, 'cb' => array('bar')));

var_dump(arrayEqual($array1, $array2));

function arrayEqual($a1, $a2)
{
    if (count(array_diff($a1, $a2)))
    	return false;

    foreach ($a1 as $k => $v)
    {
    	if (is_array($v) && !arrayEqual($a1[$k], $a2[$k]))
    		return false;
    }

    return true;
}

Ya da bu gibi tam kesmek kullanabilirsiniz:

if (serialize($array1) == serialize($array2))