source

PHP의 한 줄 if 문

factcode 2023. 8. 27. 09:57
반응형

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

반응형