В PHP я пытаюсь сопоставить вторую строку (содержащую дату рождения) с заданной датой рождения. Различные элементы строки, я дал разные входные данные, поэтому нет необходимости разбивать число на части.
Мой вопрос, действительно, для даты рождения есть контрольная цифра, которая проверяет дату рождения с помощью формулы.
Как я могу проверить контрольную цифру с помощью PHP?
Как работает контрольная цифра
Машиночитаемые паспорта — Википедия
Я создал некоторый код, который должен работать. По какой-то причине он всегда возвращает истину.
<?php
//Set variables for passport number and the corresponding check digit
$passportnumber = "123456789";
$checkdigit= "7";
//Set variables for each character of the passport number
$ppnumber1 = substr($passportnumber,0,1);
$ppnumber2 = substr($passportnumber,1,1);
$ppnumber3 = substr($passportnumber,2,1);
$ppnumber4 = substr($passportnumber,3,1);
$ppnumber5 = substr($passportnumber,4,1);
$ppnumber6 = substr($passportnumber,5,1);
$ppnumber7 = substr($passportnumber,6,1);
$ppnumber8 = substr($passportnumber,7,1);
$ppnumber9 = substr($passportnumber,8,1);//Check the passport number has been set properly
echo "Passport number is
$ppnumber1$ppnumber2$ppnumber3$ppnumber4$ppnumber5$ppnumber6$ppnumber7$ppnumber8$ppnumber9";
$formula = ($ppnumber1*7) + ($ppnumber2*3) + ($ppnumber3*1) + ($ppnumber4*7) + ($ppnumber5*3) + ($ppnumber6*1) + ($ppnumber7*7) + ($ppnumber8*3) + ($ppnumber9*1);
$checker = $formula % 10;
if ($checker = $checkdigit){
echo "True";
} else{
echo "False";
}
?>
Я понял, что мне нужно == вместо =. Затем код работал как ожидалось.
Других решений пока нет …