배열 잘되는데요,,,,그런데

배열 잘되는데요,,,,그런데

QA

배열 잘되는데요,,,,그런데

답변 1

본문

왕계란님 등 여러분이 알려주셔서 잘됩니다.

 

<?
$result = [];
$str = $write[wr_1];
$arr = explode("|", $str);
for($i = 0, $j = 0; $i < count($arr); $i++) {
    if($arr[$i] == 0) {
        $j++;
        continue;
    }
    $result[$j][] = $arr[$i];
}
$sum = array_map(function($result) {
    return array_sum($result);
},  $result);


echo implode("|", $sum);
?>

 

원래 wr_1에

 

22|14|44|26|0|2|6|87|85|0||3|

 

이런식으로 들어가 있습니다,

 

0까지의 합산값

다음 0까지의 합산값을

 

22|14|44|26|0이 있던 요자리|2|6|87|85|0이 있던 요자리에||3|

 

이런식으로 위의 배열 $sum값을 넣고 싶습니다.

$result 및 $sum으로 합산값이 나왔는데

 

원래 있던 0의 자리에

$sum을 넣고 싶습니다.

 

echo implode("|", $sum);

이걸 어떻게 해야할지,,ㅋ

이 질문에 댓글 쓰기 :

답변 1

$str = $write[wr_1]; <--이런 코드는 불필요

 

<? 

//$write['wr_1'] = "22|14|44|26|0|2|6|87|85|0||3|";
$arr = explode("|", $write['wr_1']);

$sum=0;
for($i = 0; $i < count($arr); $i++) {

 if($arr[$i] =='') continue;
 if($arr[$i] == 0){ $arr[$i] = $sum; $sum=0;}
 else $sum+= $arr[$i];
}

 $wr_1 = implode('|', $arr);

?>

 

<input type='text' name='wr_1' value='<?=$wr_1?>'>

 

질문을 좀 명확하게 하셔야 한번에 답변을 얻을텐데요
나머지를 공백으로 해서 저장해버리면 기존에 들어잇던 값들을 알수가 없게 되는데
상관이 없다는 것인가요?
특히나 마지막 3은 아무 곳에도 쓰이지않고 버려지잖습니까?

어쨌던 아래처럼 수정하면 됩니다
else $sum+= $arr[$i]; ---> 수정
 else{ $sum+= $arr[$i]; $arr[$i]='';}

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 224
© SIRSOFT
현재 페이지 제일 처음으로