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)
);
}
我正在尝试将 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)
);
}