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

합계 구하려면 채택완료

sIr어드민 3년 전 조회 2,258

1-2단계를 거치다보니

이렇게 얻게 됩니다.

$text = 0010000000010000010000

여기서 1의 값만 더하여 3이 나오게 하려면 좋은 방법이 있을까요?

 

 

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

답변 7개

채택된 답변
+20 포인트
그누위즈

</p>

<p>$text  = "0010000000010000010000";

$arr_text = str_split($text);</p>

<p>$number = 0;

foreach($arr_text as $key=>$val) {

    if ($val == 1) {

        $number++;

    }

}</p>

<p>echo $number;</p>

<p>

결과는 3

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

답변에 대한 댓글 1개

s
sIr어드민
3년 전
고맙습니다.~

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

1~2 단계 내용이 엄청 궁금해지는군요.

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

답변에 대한 댓글 2개

s
sIr어드민
3년 전
아 그러시군요 ㅎ 다름아니라
preg_match_all 하는데 구조가 복잡하여
초보가 정규식 배워가며 아무리해도 복잡한 구조를 정규식을 만드는게 어려워서
일차 php사이트에 있는대로 |<[^>]+>(.*)</[^>]+>|U 모든 요소를 뽑아낸다음에
그걸 foreach로 다시 돌려 그중에 내가 뽑고자 하는갯수가 몇개인지를 알아내는데 10000101010000 이런식으로 나와서 ㅋ 결국 3개인거를 문제는 매번 달라질 수 있으니 식으로 몇개인지를 알아야 해서요,,이미지 주소를 뽑는거도 일반적인거야 구글링으로 뽑을 수 있는데
내거는 복잡해서 어렵네요 </br> 이나 공백들어가 있으면 안되고 행갈이 되어 있어도 안되고 ㅜㅜ
엑스엠엘
3년 전
그냥 sample html 올리시고
원하시는 내용을 말씀하시는 것이
더 효율적인 방법을 얻으실 수 있을 겁니다.

정규식 고수들이 많습니다.

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

B
3년 전

substr_count() 함수가 간편하긴 하지만,

1~9까지의 랜덤한 숫자라면 배열 함수 이용하면 편합니다.

알아두면 써먹기 좋은 함수 소개합니다.

</p>

<p><?php</p>

<p>$text = '0010000000010000010000';

$temp = str_split($text);

echo array_sum($temp); // 3</p>

<p> </p>

<p>$text = '0 0 10 0 0 0 0 0 0 0 0 20 0 0 0 0 0 30 0 0 0 0'; // 공백으로 구분해 저장했다면

$temp = explode(' ', $text); // 공백으로 분리해 더해주면 그만

echo array_sum($temp); // 60</p>

<p>

+ str_split()

- https://www.php.net/manual/en/function.str-split.php

- http://docs.php.net/manual/kr/function.str-split.php

 

+ array_sum()

- https://www.php.net/manual/en/function.array-sum.php

- http://docs.php.net/manual/kr/function.array-sum.php

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

답변에 대한 댓글 1개

s
sIr어드민
3년 전
거듭 감사합니다. 고맙습니다.

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

다들 php 로 짜 주셔서 스크립트로는

 

</p>

<p><script>

my = "0010000000010000010000";

num = 0;

for (i in my.split("")) if (my.split("")[i] == 1) ++num;

document.write(num);

</script></p>

<p>

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

답변에 대한 댓글 1개

s
sIr어드민
3년 전
감사합니다~ 이거도 냉장고에 넣어두고 마음대로 꺼내먹을 수 있겠습니다.

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

</p>

<p>$sum = [];

$text = "0010000000010000010000";

foreach(str_split($text) as $num) {

    $sum[] = (int)$num;

}

echo array_sum($sum);</p>

<p>

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

답변에 대한 댓글 1개

s
sIr어드민
3년 전
감사합니다~ 다 잘되네요, 냉장고에 넣어놓고 아무때나 골라먹으면 되겠습니다.

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

s
sinbi Expert
3년 전

<?php
$text  ="0010000000010000010000";
echo substr_count($text, "1"); // 3

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

답변에 대한 댓글 2개

s
sIr어드민
3년 전
신비님, 감사합니다 ㅎ 이게 간단하고 제 취향에 맞습니다.
s
sinbi
3년 전
제 취향은 쟁반짜장 님. ㅎㅎ

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

<?
$text = '0020200000000000000000000000002';
$h=2;
$s_count= substr_count($text,'2');

echo $h."의 합은=".$s_count*$h;

?>

2의 합은=6

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

답변에 대한 댓글 2개

s
sinbi
3년 전
2를 하나 더 넣어봤는데, 여전히 6으로 나와용. 8이 나와야 하는데...

$text = '00200000000200000200200';
$h=2;
echo $h."의 합은=".((strpos($text,'2')*$h)+$h); // 6
열린이글
3년 전
제가 착각했네요
<?
$text = '0020200000000000000000000000002';
$h=2;
$s_count= substr_count($text,'2');

echo $h."의 합은=".$s_count*$h;

?>

2의 합은=6

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

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

로그인