PHP 对子字符串的最后 6 位求和

PHP sum last 6 digit from substring

我正在尝试将 substr() 中最后 6 位的所有数字相加。假设数字是 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;

}

从上面的函数中,发生 "A non-numeric value encountered" 错误。需要有关如何执行此操作的建议。谢谢

您试图获取比字符串包含的字符更多的字符。将条件表达式中的“<=”替换为“<”,即更改:

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

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

您需要在 for 循环中使用 < 而不是 <=

而且你可以用更简单的方法来做,

$result = 0;
for($i = 0; $i < 6; $i++){
    $result += $string[-$i];
}

没有循环的替代方法(或错误检查,它的价值):

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

Demo