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

값이 문자일 떄 출력하는 방법은? 채택완료

허당빵 6년 전 조회 4,322

안녕하세요? php 초보자 입니다. 새해 복 많이 받으시구요~

 

만약에 여분 필드 wr_1이 받는 값이 숫자가 아니고 문자(string)이면 홍길동으로 출력하라~ 이것을 어떻게 처리를 해야 하는지요?

 

if($list[$i]['wr_1'] = 문자) echo '홍길동';

 

감사합니다. 좋은 하루 되십시오~^^)

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

답변 8개

채택된 답변
+20 포인트
플래토
6년 전

이왕 체크하는거 값이 존재하는지 여부를 먼저 확인해야 오류가 안날겁니다.

isset을 이용해서 변수가 존재하고 문자열인지 판단해서 '홍길동' 또는 '' 로 값을 셋팅하는게

좀더 안정적인 방법입니다.

</p>

<p>$str = (isset($list[$i]['wr_1']&&is_string($list[$i['wr_1'])):"홍길동":"";</p>

<p>echo $str;</p>

<p>

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

답변에 대한 댓글 5개

허당빵
6년 전
감사합니다. 그러면 if 처리는 어떻게 해야 하는지요?
플래토
6년 전
if처리가 내포된 3항연산자.. 를 제가 누락했네요 ^^
수정이안되네요

$str = (isset($list[$i]['wr_1']&&is_string($list[$i['wr_1'])):"홍길동":"";
에서 : 앞에것을 ? 로

$str = ( isset($list[$i]['wr_1']) && is_string($list[$i['wr_1']) )?"홍길동":"";

입니다.
허당빵
6년 전
구문 사이에다 이것을 if로 해서 넣으려고 하는데...잘 안 됩니다. 제가 적용을 못 하겠습니다...ㅜㅜ
허당빵
6년 전
감사합니다.
구문은 다음과 같습니다.

<td class="td_wr_1">
<?php
if(strtotime($list[$i]['wr_1'] ) - G5_SERVER_TIME > (86400 * 1)){
echo $list[$i]['wr_1'] ;

} else if(strtotime($list[$i]['wr_1'] ) - G5_SERVER_TIME < (86400 * 1)){
echo '마감임박';

} else{
echo $list[$i]['wr_1'] ;
}
?>
</td>

여기에 어떻게 넣어야 하는지요?
플래토
6년 전
@허당빵

답변하다가 누락한게 하나더 있었네요
) 를 빠뜨려서 오류가 났겠네요. 미안합니다.

$str = ( isset($list[$i]['wr_1']) && is_string($list[$i['wr_1']) )?"홍길동":"";
로 다시 해보세요

로직은 if문이 필요없는 3항
$변수 = (비교) ? 참 : 거짓 ;

의 구조이고

비교의 내용은

1. 변수가 존재하는지
&&
2. 문자열인지

참은 "홍길동"
거짓은 "" 공백
참과 거짓 값중에 하나가
변수에 대입

되는 구조입니다.

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

6년 전

많은 분께 감사드립니다.

데이터 양이 양이 많지 않으므로 그냥 수작업(?)으로 하여야 할 것 같습니다.

좋은 저녁 되시고 복 많이 벋으십시오~^^)

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

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

티로그
6년 전

strtotime($list[$i]['wr_1']) 부분에서 날짜를 나타내지 않는 문자열이면 반환값이 false 입니다 문자열이 아닐 때 조건 if(strtotime($list[$i]['wr_1'] ) - G5_SERVER_TIME < (86400 * 1)) 는 if(false - G5_SERVER_TIME < (86400 * 1)) 이므로 항상 참입니다.

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

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

6년 전

if(!empty($list[$i]['wr_1']) && !is_numeric($list[$i]['wr_1']))      echo "홍길동";

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

답변에 대한 댓글 4개

허당빵
6년 전
감사합니다. 그런데 안 됩니다.
평정심
6년 전
그누보드 또는 영카트라면 다음 처럼 해 보시죠. 도대체 어떤 값이 들어 있길래
많은 분들이 답해 드리고 있는 것들이 안되고 있는지 말이죠.

alert("값 : ".$list[$i]['wr_1']);

또는
alert("값 : ".gettype($list[$i]['wr_1']));
허당빵
6년 전
감사합니다.
구문은 다음과 같습니다.

<td class="td_wr_1">
<?php
if(strtotime($list[$i]['wr_1'] ) - G5_SERVER_TIME > (86400 * 1)){
echo $list[$i]['wr_1'] ;

} else if(strtotime($list[$i]['wr_1'] ) - G5_SERVER_TIME < (86400 * 1)){
echo '마감임박';

} else if(!empty($list[$i]['wr_1']) && !is_numeric($list[$i]['wr_1']))
echo "채용시";

} else{
echo $list[$i]['wr_1'] ;
}
?>
</td>

글쓰기를 할 때 여분필드 wr_1 에 '채용시'라고 넣은 곳이 '채용시' 라고 출력되기를 바라는데...
그냥 '마감임박'이라고 출력되고 있습니다.
평정심
6년 전
로직이 전혀 잘못되었으니 안되고 있었던 겁니다.
원하시는 결과를 제대로 알려 주시죠.

하루가 지나면 그대로 출력한다.
하루가 지나지 않았으면 '마감임박'이라 출력한다.

그 다음은 어떻게 되죠?

현재 if문이 조건으로 분기될 수 없는 조건을 사용하므로 원하시는 값을
얻고 있지 못한겁니다.

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

w
6년 전

is_string 도 좋은데.. 숫자값으로만 된거는 무시해야하는 경우도 있다면 is_numeric() 이랑 empty() 로 체크 하면 좋겠네요.

 

빈공백이 아니고, 숫자가 아니면 문자겠죠?

</p>

<p>if (!empty($list[$i]['wr_1']))</p>

<p>{</p>

<p>if(!is_numberic($list[$i]['wr_1']))</p>

<p> {</p>

<p>  echo "홍길동";</p>

<p> }</p>

<p>}</p>

<p>

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

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

6년 전

</p>

<p>if(is_string($list[$i]['wr_1'])</p>

<p> echo '홍길동';</p>

<p>

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

답변에 대한 댓글 1개

허당빵
6년 전
감사합니다. 그런데 안 됩니다.

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

그누위즈

is_string() 함수를 사용하면됩니다.

http://php.net/manual/kr/function.is-string.php

 

if( is_string($list[$i]['wr_1']) == true ) echo '홍길동';

 

$test = 1234;

if( is_string($test) ) {     echo 'String'; } else {     echo 'String 아님'; }

 

이렇게 사용이됩니다

true는 if 에서 존재하는 것으로 인식합니다.

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

답변에 대한 댓글 1개

허당빵
6년 전
감사합니다. 그런데 안 됩니다.

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

blackblack9685

잘은 모르지만 한번 해보세요

if($list[$i]['wr_1'] != 'number') {     echo '홍길동';

}

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

답변에 대한 댓글 1개

허당빵
6년 전
감사합니다. 그런데 안 됩니다.

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

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

로그인