배열에서... 질문은 간단한데..내용은 어렵네요

배열에서... 질문은 간단한데..내용은 어렵네요

QA

배열에서... 질문은 간단한데..내용은 어렵네요

본문

wr_1에

 

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

 

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

 

0까지의 합산값

다음 0까지의 합산값을

wr_2필드에 배열로 집어넣고 싶은데 어떻게 할 수 있을까요?

 

 

 

 

이 질문에 댓글 쓰기 :

답변 4


$result = [];
$str = "22|14|44|26|0|2|6|87|85|0||3|";
$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에 1|2|2|1|0|1|3|4|0|4 이러면

wr_2에  | | | |요기에| | | |요기에|||
이렇게 저장되게 할 수 없을까요?
다른 공간은 공백이구요


$sum = 0;
$result = [];
$str = "22|14|44|26|0|2|6|87|85|0||3|";
$arr = explode("|", $str);
for($i = 0; $i < count($arr); $i++) {
	$sum += $arr[$i];
	if($arr[$i] == 0 && is_numeric($arr[$i])) {
		$result[] = $sum;
		$sum = 0;
		continue;
	}
	$result[] = $arr[$i];
}

$wr_2 = implode("|", $result);

그냥 불러온  값을 반복문을 하고   | 구분자로 해서 변수를 지정하고 그값을  합산해서 

배열로 만들면 될거같은데요 

소스로 대답 못해서 미안합니다


$str = '22|14|44|26|0|2|6|87|85|0||3|';
$sum = 0;
 
$arrRes = [];
$arrNum = explode('|', $str);
 
foreach ($arrNum as $num) {
    if (is_numeric($num)) {
        if ($num > 0) {
            $sum += $num;
        } else {
            $arrRes[] = $sum;
            $sum = 0;
        }
    }
}
var_dump($arrRes);

저도 궁금한 게 하나 있는데,
아래 코드 부분엔 $arrRes 관련된 게 없는데
어떻게 sum값이 $arrRes 변수 배열값으로 담기는 건가요? 신기한 코드에요.ㅎ

if ($num > 0) {
            $sum += $num;

sinbi // if문에서 $num > 0의 경우에 $sum 변수에 값을 계속 더해줍니다. 그리고 0을 만나서 else로 넘어가면 그동안 $sum에 더해졌던 값을 $arrRes에 배열로 담고 $sum 변수를 다시 초기화 해주는거죠.


$tx = "22|14|44|26|0|2|6|87|85|0||3| ";
 
list( $a, $b, $c ) = split( "|0|", $tx );
$a2 = split( "|", $a);
$b2 = split( "|", $b);
$newarr[] = array_sum( $a2 );
$newarr[] = array_sum( $b2 );
 
print_r( $newarr ); // --> array( 0=>.... , 1=>.... )
 

오~~~~ 호, ( ^ _______ ^ ) ==b

<?php
$str = '1|2|3|4|0|2|4|6|8|0||3|';

list( $a, $b, $c ) = explode("|0|",$str);
$a2 = explode( "|", $a);
$b2 = explode( "|", $b);
$newarr[] = array_sum( $a2 );
$newarr[] = array_sum( $b2 );
 
print_r( $newarr );

답변을 작성하시기 전에 로그인 해주세요.
전체 2,512
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT