합계 구하려면

합계 구하려면

QA

합계 구하려면

본문

1-2단계를 거치다보니

이렇게 얻게 됩니다.

$text = 0010000000010000010000

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

 

 

이 질문에 댓글 쓰기 :

답변 7


$text  = "0010000000010000010000";
$arr_text = str_split($text);
$number = 0;
foreach($arr_text as $key=>$val) {
    if ($val == 1) {
        $number++;
    }
}
echo $number;

결과는 3

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

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

?>

2의 합은=6

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


$sum = [];
$text = "0010000000010000010000";
foreach(str_split($text) as $num) {
    $sum[] = (int)$num;
}
echo array_sum($sum);

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

 


<script>
my = "0010000000010000010000";
num = 0;
for (i in my.split("")) if (my.split("")[i] == 1) ++num;
document.write(num);
</script>

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

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

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


<?php
$text = '0010000000010000010000';
$temp = str_split($text);
echo array_sum($temp); // 3
 
$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

+ 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~2 단계 내용이 엄청 궁금해지는군요.

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

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

회원로그인

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