테스트 사이트 - 개발 중인 베타 버전입니다

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

콜라시러 5년 전 조회 2,917

$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개

채택된 답변
+20 포인트
5년 전

 

</strong></p>

<p>$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 "
 $i // $j => $tmpArr[$i] == $tmpArr[$j] ";

      if($tmpArr[$i] == $tmpArr[$j]) $cntArr[$i]+=1;

      else{ $i= $j-1; break;}

   }

}</p>

<p> </p>

<p>foreach($cntArr as $key=>$value){

   if($tmpArr[$key] >0 ) echo "
 $tmpArr[$key]  ==> $value";

 }</p>

<p> <strong>

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

콜라시러
5년 전
와우~~ 감사합니다. 잘됩니다^^

댓글을 작성하려면 로그인이 필요합니다.

검은냥냥이

</p>

<p>$temp = "0,0,26,26,27,27,26,26,26,25";</p>

<p>$temp = array_count_values(explode(",", $temp));</p>

<p>foreach ($temp as $key => $value) {</p>

<p>    // 반복되는 숫자가 키값으로 들어감</p>

<p>    if ($key > 0) {</p>

<p>        echo "{$key} = {$value}번".PHP_EOL;</p>

<p>    }</p>

<p>}</p>

<p>

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

콜라시러
5년 전
26이 5번 나오는 것이 아니라 2번, 3번 이렇게 2번 나와야 합니다. ㅠ

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인