값이 문자일 떄 출력하는 방법은?

값이 문자일 떄 출력하는 방법은?

QA

값이 문자일 떄 출력하는 방법은?

본문

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

 

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

 

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

 

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

이 질문에 댓글 쓰기 :

답변 8

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

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

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


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

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']) )?"홍길동":"";

입니다.

감사합니다.
구문은 다음과 같습니다.

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

여기에 어떻게 넣어야 하는지요?



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

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

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

의 구조이고

비교의 내용은

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

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

되는 구조입니다.

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

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

}

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 에서 존재하는 것으로 인식합니다.


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

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

 

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


if (!empty($list[$i]['wr_1']))
{
if(!is_numberic($list[$i]['wr_1']))
 {
  echo "홍길동";
 }
}

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

그누보드 또는 영카트라면 다음 처럼 해 보시죠. 도대체 어떤 값이 들어 있길래
많은 분들이 답해 드리고 있는 것들이 안되고 있는지 말이죠.

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

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

감사합니다.
구문은 다음과 같습니다.

<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 에 '채용시'라고 넣은 곳이 '채용시' 라고 출력되기를 바라는데...
그냥 '마감임박'이라고 출력되고 있습니다.

로직이 전혀 잘못되었으니 안되고 있었던 겁니다.
원하시는 결과를 제대로 알려 주시죠.

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

그 다음은 어떻게 되죠?

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

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

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

회원로그인

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