<?php
$a = "8945876459564612";
$b = "612";
function add_on_str($x,$y){
$xArr = str_split($x,1);
$yArr = str_split($y,1);
$resultArr = [];
$arrSub = count($xArr)-count($yArr);
if($arrSub>0){
for ($i = 0; $i < abs($arrSub); $i++) {
array_unshift($yArr,"0");
}
}else{
for ($i = 0; $i < abs($arrSub); $i++) {
array_unshift($xArr,"0");
}
}
$inc = 0;
for ($i = count($xArr); $i>0 ; $i--) {
$tempsum = intval($xArr[$i-1])+intval($yArr[$i-1])+$inc;
if($tempsum>9){
$inc = 1;
array_unshift($resultArr,strval($tempsum%10));
}else{
$inc = 0;
array_unshift($resultArr,strval($tempsum));
}
}
if($inc==1){
array_unshift($resultArr,"1");
}
return implode("",$resultArr);
}
function sub_on_str($x,$y){
$xArr = str_split($x,1);
$yArr = str_split($y,1);
$resultArr = [];
$arrSub = count($xArr)-count($yArr);
if($arrSub>0){
for ($i = 0; $i < abs($arrSub); $i++) {
array_unshift($yArr,"0");
}
}else{
for ($i = 0; $i < abs($arrSub); $i++) {
array_unshift($xArr,"0");
}
}
$bigArr = null;
$smallArr = null;
$sign = null;
for ($i = 0; $i< count($xArr); $i++){
if(intval($xArr[$i])<intval($yArr[$i])){
$bigArr = $yArr;
$smallArr = $xArr;
$sign = "-";
break;
}elseif(intval($xArr[$i])>intval($yArr[$i])){
$bigArr = $xArr;
$smallArr = $yArr;
break;
}else{
continue;
}
}
if($bigArr == null){
return "0";
}
$sub = 0;
for ($i = count($bigArr); $i>0 ; $i--) {
$tempsum = intval($bigArr[$i-1])-intval($smallArr[$i-1])-$sub;
if($tempsum<0){
$sub = 1;
array_unshift($resultArr,strval($tempsum)+10);
}else{
$sub = 0;
array_unshift($resultArr,strval($tempsum));
}
}
for ($i=0;$i==0;) {
if($resultArr[0]=="0"){
array_shift($resultArr);
}else{
break;
}
}
if($sign!=null){
array_unshift($resultArr,$sign);
}
return implode("",$resultArr);
}
var_dump(add_on_str($a,$b)); //string(17) "8945876459565224"
var_dump(sub_on_str($b,$a)); //string(18) "-8945876459564000"
?>