PHP의 한 줄 if 문
자바스크립트와 비슷한 것을 하고 싶습니다.
var foo = true;
foo && doSometing();
하지만 이것은 PHP에서는 작동하지 않는 것 같습니다.
조건이 충족되면 레이블에 클래스를 추가하려고 하고 있으며 가독성을 위해 내장된 PHP를 최소화하고 싶습니다.
지금까지 알아낸 것은:
<?php $redText='redtext ';?>
<label class="<?php if ($requestVars->_name=='')echo $redText;?>labellong">_name*</label>
<input name="_name" value="<?php echo $requestVars->_name; ?>"/>
그런데도 IDE는 제가 교정기가 없는 if 문을 가지고 있다고 불평하고 있습니다.
3진수 연산자 사용 ?:
이것을 변경합니다.
<?php if ($requestVars->_name == '') echo $redText; ?>
와 함께
<?php echo ($requestVars->_name == '') ? $redText : ''; ?>
요컨대
// (Condition)?(thing's to do if condition true):(thing's to do if condition false);
3차 연산자 논리를 사용할 수 있습니다. 3차 연산자 논리는 "(조건)을 사용하는 과정입니까?(true return value) : (false return value)" 명령문을 사용하여 if/return 구조를 줄입니다.
/* most basic usage */
$var = 5;
$var_is_greater_than_two = ($var > 2 ? true : false); // returns true
이런 거?
($var > 2 ? echo "greater" : echo "smaller")
샘플 사용량
단순 연산자에서 고급 연산자까지 몇 가지 더 사용할 수 있습니다.
기본 사용:
$message = 'Hello '.($user->is_logged_in() ? $user->get('first_name') : 'Guest');
간단한 사용법:
$message = 'Hello '.($user->get('first_name') ?: 'Guest');
에코 인라인
echo 'Based on your score, you are a ',($score > 10 ? 'genius' : 'nobody');
조금 더 터프함
$score = 10;
$age = 20;
echo 'Taking into account your age and score, you are: ',($age > 10 ? ($score < 80 ? 'behind' : 'above average') : ($score < 50 ? 'behind' : 'above average')); // returns 'You are behind'
복잡한 수준
$days = ($month == 2 ? ($year % 4 ? 28 : ($year % 100 ? 29 : ($year %400 ? 28 : 29))) : (($month - 1) % 7 % 2 ? 30 : 31)); //returns days in the given month
3차 연산자 및 사용법에 대한 자세한 내용은 PHP.net 비교 연산자 또는 여기를 참조하십시오.
저는 미니멀리스트 PHP 텍스트 출력 구문을 사용하는 것을 좋아합니다.
HTML stuff <?= $some_string ?> HTML stuff
(이것은 사용하는 것과 동일하게 작동합니다.<?php echo $some_string; ?>
)
3진수 연산자를 사용할 수도 있습니다.
//(condition) ? (do_something_when_true) : (do_something_when_false);
($my_var == true) ? "It's true" : "It's false ;
다음과 같은 결과를 맺습니다.
<?= ($requestVars->_name=='') ? $redText : '' ?>
3진수 연산자 사용:
echo (($test == '') ? $redText : '');
echo $test == '' ? $redText : ''; //removed parenthesis
그러나 이 경우에는 반환되므로 더 짧은 역버전을 사용할 수 없습니다.bool(true)
제일 상태로
echo (($test != '') ?: $redText); //this will not work properly for this case
원래 질문은 html에서 if()의 사용을 지정하기 때문에 다른 답변을 제공하겠습니다.
<a class="menu-item" href="/about-us"><?= (pll_current_language() == 'en') ? 'About us' : 'Om oss' ?></a>
제공된 답변은 당신의 경우에 가장 좋은 해결책이고, 그것들은 저도 하는 일이지만, 만약 당신의 텍스트가 기능이나 수업 방법으로 인쇄된다면 자바스크립트에서와 동일하게 할 수 있습니다.
function hello(){
echo 'HELLO';
}
$print = true;
$print && hello();
언급URL : https://stackoverflow.com/questions/21078149/one-line-if-statement-in-php
'source' 카테고리의 다른 글
도커 태그 이미지 제거 (0) | 2023.08.27 |
---|---|
ASP에서 오류를 반환하는 방법.NET MVC 동작 (0) | 2023.08.27 |
오류 1064(42000): SQL 구문 오류...근처에 (0) | 2023.08.27 |
fs 수정 방법: 네이티브 모듈 소스 재평가는 지원되지 않습니다' - graceful-fs (0) | 2023.08.27 |
MariaDB를 제거하고 MySQL for Postfix를 설치하는 방법은 무엇입니까? (0) | 2023.08.27 |