public string MusteriEkle(string cardNumber)
{
byte[] number = new byte[16]; // number to validate

// Remove non-digits
int len = 0;
for (int i = 0; i < cardNumber.Length; i++)
{
if (char.IsDigit(cardNumber, i))
{
// if (len == 16) return false; // number has too many digits
number[len++] = byte.Parse(cardNumber[i].ToString());
}
}

// Use Luhn Algorithm to validate
int sum = 0;
if (len > 0)
{
for (int i = len - 1; i >= 0; i--)
{
if (i % 2 == len % 2)
{
int n = number[i] * 2;
sum += (n / 10) + (n % 10);
}
else sum += number[i];
}
}
int s = sum % 10;
if (s != 0)
{
s = 10 - s;
cardNumber = cardNumber.Remove(cardNumber.Length - 1, 1) + s.ToString();
}
return cardNumber;
}





yukarıdaki c# methodunun ne işlemler yaptığını anlatabilirseniz aynı fonksiyonu php ye çevirmem gerekiyor