Yücel Yıldırım
- 28 Nis 2019
- 1,397 Mesaj
Aktiflik
Seviye
Deneyim
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…-
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…-
Kod:
<?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
}
?>

