PHP ile TC Numaradan Akraba Bulma Algoritması

Kodları yazarken adım adım açıklamalar ekledim yine de özetlemek gerekirse;
1) tc numarasını bir değişkene atadık, ilk 9 hanesini aldık farklı bir değişkene atadık
2) 9 haneli numaranın ilk 5 hanesi ve son 4 hanesini ayırdık
3) burdan sonrasını for döngüsü içinde yazdık çünkü tcüretme tekrarlama işi burada dönecek
4) ilk 5 haneye 3 ekledik, son 4 haneden 1 cıkardık
… devamını kodlardan takip edebilirsiniz…

<?php
 
$tcno = "11111111111"; // 11 haneli tc no buraya gelecek bu alana post olarak da alabilirsiniz tcyi
$ilk9 = substr($tcno, 0, 9); // girilen tc numarasının ilk 9 hanesi
//echo $ilk9;
$tc5 = substr($ilk9, 0,5); // 9 haneli numaranın ilk 5 hanesi
$tc4 = substr($ilk9, 5,4); // 9 haneli numaranın son 4 hanesi
// $tc4 = substr_replace($ilk9, '', -3); son 3 hane silme
for ($j=0; $j < 100; $j++) {  // 100 yerine girilen rakam kadar program TC üretecektir
					// yaşça daha büyük akrabayı bulmak için geçerlidir. Daha kucuk için tam tersi yapılacaktır. ( 3 çıkartılacak 1 eklenecek)
	$tc5 = $tc5+3; // ilk 5 haneye 3 ekliyoruz
	$tc4 = $tc4-1; // son 4 haneden 1 cıkarıyoruz
	$ytc9 = $tc5.$tc4; // yeni üretilen 9 haneli tc
$num = $ytc9;
$num = str_split($num,1);
$arr_odd = array();
$arr_doub = array();
for ($i = 0; $i < count($num); $i++) {
    if ($i % 2 == 0)
        $arr_doub[] = $num[$i];
    else
        $arr_odd[] = $num[$i];
}
$yeni9 = 7*array_sum($arr_doub); // 1. 3. 5. 7. 9. haneleri toplayıp 7 ile çarptık
$yhn10 = ($yeni9-array_sum($arr_odd))%10; // 7 ile çarptığımız değerden 2. 4. 6. 8. haneleri toplayıp çıkardık  mod10 aldık 10. haneyi elde ettik
$yeni10 = $ytc9.$yhn10; // 10 haneli halini yazdırdık
$yeni10  = str_split($yeni10,1);
$arr_top = array();
for ($i = 0; $i < count($yeni10 ); $i++) {
$arr_top[] = $yeni10[$i]; // 10 haneyi diziye aktardık
	}
	$toplam10hn=array_sum($arr_top); // 10 haneli sayının rakamlarını topladık
	$yhn11=(array_sum($arr_top))%10;  // mod10 alarak 11. haneyi elde ettik
	echo $yeniTc = $ytc9.$yhn10.$yhn11."<br>"; // 9 haneli sonucun arkasına elde ettiğimiz 10. ve 11. haneleri yazdırarak yeni tc numarasını elde ediyoruz
}
 
 ?>

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.