PHP сумма последних 6 цифр из подстроки - PullRequest
0 голосов
/ 01 ноября 2019

Я пытаюсь добавить все цифры из последних 6 цифр из substr (). Допустим, номер 19283774616, я пытаюсь получить результат из этого: 7 + 7 + 4 + 6 + 1 + 6 =?. Вот мой текущий код

public function accountHash($accountNumber)
{
    $result = 0;
    $accountNumber = substr($accountNumber, -6);

    for($i=0; $i<=strlen($accountNumber); $i++) {
        $result += substr($accountNumber, $i, 1); // A non-numeric value encountered here
    }

    echo $result;

}

Из вышеприведенной функции произошла ошибка «Обнаружено нечисловое значение». Нужно предложение о том, как это сделать. Спасибо

Ответы [ 3 ]

0 голосов
/ 01 ноября 2019

Вам нужно использовать < вместо <= в цикле for.

И вы можете сделать это более простым способом,

$result = 0;
for($i = 0; $i < 6; $i++){
    $result += $string[-$i];
}
0 голосов
/ 01 ноября 2019

Альтернативный метод без циклов (или проверки ошибок, для чего это стоит):

function accountHash($accountNumber)
{
    return array_sum(
        preg_split('//u', mb_substr($accountNumber, -6), null, PREG_SPLIT_NO_EMPTY)
    );
}

Демо

0 голосов
/ 01 ноября 2019

Вы пытаетесь получить больше символов, чем содержит строка. Замените «<=» на «<» в выражении условия, т.е. измените: </p>

for($i=0; $i<=strlen($accountNumber); $i++) {

на

for($i=0; $i<strlen($accountNumber); $i++) {
...