연속되는 값의 개수를 구하고 싶습니다.

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
연속되는 값의 개수를 구하고 싶습니다.

QA

연속되는 값의 개수를 구하고 싶습니다.

본문

$temp="0,0,26,26,27,27,26,26,26,25";

위와 같은 변수에서 0보다 큰수중에서 연속해서 중복 되는 값의 개수를 구하려 합니다.(반복허용)

나와야 하는 값이

26 = 2번
27 = 2번
26 = 3번
25 = 1번

이렇습니다.

26은 앞에서 한번 나왔지만 뒤에 다시 나오는 경우 반복을 허용하여 다시 연이어나오는 개수를 찾은 것입니다.

 

array_count_values로는 의도하는 값이 나오지 않고

배열에 담아서 어찌어찌 해봤는데 제자리만 맴돌고 소스는 길어지고 답은 나오지 않고 그렇네요...

추석연휴 잘 보내시고 코로나 조심하세요^^

미리 감사합니다.

이 질문에 댓글 쓰기 :

답변 2

 


$temp = "0,0,26,26,27,27,26,26,26,25";
$tmpArr = explode(",", $temp);
$CNT = count($tmpArr);
for($i=0; $i<$CNT; $i++){ $cntArr[$i]=1;
    for($j= $i+1; $j < $CNT; $j++){
      //echo "<br> $i // $j => $tmpArr[$i] == $tmpArr[$j] ";
      if($tmpArr[$i] == $tmpArr[$j]) $cntArr[$i]+=1;
      else{ $i= $j-1; break;}
   }
}
 
foreach($cntArr as $key=>$value){
   if($tmpArr[$key] >0 ) echo "<br> $tmpArr[$key]  ==> $value";
 }
 


$temp = "0,0,26,26,27,27,26,26,26,25";
$temp = array_count_values(explode(",", $temp));
foreach ($temp as $key => $value) {
    // 반복되는 숫자가 키값으로 들어감
    if ($key > 0) {
        echo "{$key} = {$value}번".PHP_EOL;
    }
}

 

1890311998_1601291632.3038.png

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

회원로그인

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