İki diziyi karşılaştırma

Gecekule

Öğrenci
Katılım
7 Ocak 2015
Mesajlar
39
Reaksiyon puanı
1
Puanları
8
Merhaba,
2 tane dizi var
$array1 = array('Adem' => 50, 'Ahmet' => 45, 'Ercan'=>25, 'Mehmet' => 33, 'Hasan' => 40);
$array2 = array('Adem' => 52, 'Ahmet' => 45, 'Osman' => 33, 'Hasan' => 40);

$array1 ana kaynak dizisi

Tablo resmi http://i.hizliresim.com/kGGvr9.png

kGGvr9.png


Yapmak istediğim yukarıda ki tablo gibi listeleme
Karşılaştırma da
eşitlenenlere yeşil renk
yaşı eşitlenmeyenlere yaşları sarı renk
diğer dizide yoksa kırmızı renk
veya bir sutün daha başına ekleyerek uygun ikonlar göstermek
 

Nanoripper

Öğrenci
Katılım
23 Aralık 2016
Mesajlar
3
Reaksiyon puanı
0
Puanları
1
PHP:
foreach ($array1 as $isim => $deger) {
    if (array_key_exists($isim, $array2)) { //diğer dizide var mı yok mu kontrol etmek için
        if ($deger == $array2[$isim]) { //ikinci dizideki değerle eşit olup olmadığını kontrol etmek için 
            //yeşil renk
        }else{
            //sarı renk
        }
    }else{
       // kırmızı renk
    }
}

şeklinde tüm değerleri ikinci tablodakilerle karşılaştırarak ilerleyebilirsin.
 

Gecekule

Öğrenci
Katılım
7 Ocak 2015
Mesajlar
39
Reaksiyon puanı
1
Puanları
8
Kod için teşekkür ederim
Ancak ikinci dizideki Osman yok
PHP:
echo '<table border="1">';


$array1 = array('Adem' => 50, 'Ahmet' => 45, 'Ercan'=>25, 'Mehmet' => 33, 'Hasan' => 40);
$array2 = array('Adem' => 52, 'Ahmet' => 45, 'Osman' => 33, 'Hasan' => 40);

foreach ($array1 as $isim => $deger) {
    
    if (array_key_exists($isim, $array2)) { //diğer dizide var mı yok mu kontrol etmek için
        
        if ($deger == $array2[$isim]) { //ikinci dizideki değerle eşit olup olmadığını kontrol etmek için
            //yeşil renk
            echo '<tr style="background-color:#00FF00;"><td>'.$isim.'</td><td>'.$deger.'</td><td>'.$isim.'</td><td>'.$array2[$isim].'</td></tr>';
        }else{
            //sarı renk
            echo '<tr><td>'.$isim.'</td><td style="background-color:yellow;">'.$deger.'</td><td>'.$isim.'</td><td style="background-color:yellow;">'.$array2[$isim].'</td></tr>';
        }
    }else{
       // kırmızı renk
        echo '<tr><td style="background-color:#FF0000;">'.$isim.'</td><td style="background-color:#FF0000;">'.$deger.'</td><td>'.$isim.'</td><td>'.$array2[$isim].'</td></tr>';
    }   
}

echo '</table>';

Çıktısı
8PNWRa.png


Bu işlemi aşağıdaki kod ile halletim
PHP:
$newArray = array();
foreach($array1 as $key => $value) {
  $newArray[$key]['col1'] = $value;
}
foreach($array2 as $key => $value) {
  $newArray[$key]['col2'] = $value;
}

foreach($newArray as $key => $data) {
  if(!isset($data['col2'])) {
// $array1 de isim var ancak $array2 de isim yok  zemin kırmızı sağ taraf boş
  }
  elseif(!isset($data['col1'])) {
// $array2 de isim var ancak $array2 de isim yok  zemin kırmızı sol taraf boş
  }
  elseif($data['col1'] != $data['col2']) {
// $array1 de ve $array2 de isimler var ancak yaşları aynı değil yaş zeminleri kırmızı
  }
  else {
// Her iki dizideki isimleri ve yaşları eşit yani sorun olmayanlar
  }
}
Yinede çok teşekkür ederim
 
Üst