null이 PHP의 한 줄에 다른 변수를 사용하는 경우
PHP에는 JavaScript와 유사한 것이 있습니까?
alert(test || 'Hello');
따라서 테스트가 정의되지 않았거나 null인 경우 Hello가 표시되고 그렇지 않은 경우 테스트 값이 표시됩니다.
PHP에서도 비슷한 구문을 시도했지만 제대로 작동하지 않는 것 같습니다.그리고 이 문제를 어떻게 검색해야 할지 모르겠어요.
감사해요.
편집
어레이 내에서 사용하고 싶다고 덧붙입니다.
$arr = array($one || 'one?', $two || 'two?'); //This is wrong
하지만 여기 문장이면 인라인 '? :'도 쓸 수 있어요. 감사합니다.
$arr = array(is_null($one) ? "one?" : $one, is_null($two) ? "two ?" : $two); //OK
PHP 7 이후로는 통합 연산자라고 불리는 것을 사용할 수 있습니다.이 연산자는 E_NOTICE 없이 원하는 대로 동작합니다.?:
리거합합니니다
하려면 , 「 」를 합니다.??
왼쪽의 값이 null이 아니라 설정되었는지 확인합니다.
$arr = array($one ?? 'one?', $two ?? 'two?');
수 있다echo $test ?: 'hello';
은 메아리친다.$test
이 'hello'
렇지지그
주의: 다음과 같은 경우 알림 또는 엄격한 오류가 발생합니다.$test
★★★★★★★★★★★★★★★★...
대부분의 서버는 이러한 오류를 무시하도록 설정되어 있기 때문에 문제가 되지 않습니다.대부분의 프레임워크에는 이러한 오류를 트리거하는 코드가 있습니다.
편집: 이것은 고전적인 Ternary 연산자이지만 가운데 부분은 생략되어 있습니다.PHP 5.3 이후 사용 가능.
echo $test ? $test : 'hello'; // this is the same
echo $test ?: 'hello'; // as this one
은 첫 되지 않은 하지 않습니다.이 첫 번째 변수의 진실성이 .이 경우, 이 변수의 신뢰성에 의해 트리거 됩니다.E_NOTICE
에러입니다. 후자의 경우, 아래의 PHP7 답변을 확인해 주세요(곧 위의 답변을 참조해 주세요).
PHP7 솔루션에 대해서는, 다음의 @Yamiko의 회답을 참조해 주세요.https://stackoverflow.com/a/29217577/140413
echo (!$test) ? 'hello' : $test;
아니면 조금 더 강해질 수도 있어요.
echo isset($test) ? $test : 'hello';
최신 버전에 따라 이것을 줄임말로 사용합니다.
$var = $value ?? "secondvalue";
원라이너가독성이 뛰어나 일반 변수, 어레이 및 객체에 적합합니다.
// standard variable string
$result = @$var_str ?: "default";
// missing array element
$result = @$var_arr["missing"] ?: "default";
// missing object member
$result = @$var_obj->missing ?: "default";
실제 상황 보기:Php 샌드박스 데모
다른 답변에서는 이것이 제안되지 않은 것에 매우 놀랐습니다.
echo isset($test) ? $test : 'hello';
isset($var)
이 경우 false가 반환됩니다.$var
존재하지 않거나 null로 설정되어 있습니다.
@Yamiko에 의해 기술된 PHP 7 이후의 null 병합 연산자는 위의 구문 바로 가기입니다.
이 경우:
echo $test ?? 'hello';
이 방법으로 배열을 작성하는 경우 에서는 (배열 내의 요소 수에 따라 다름) 보다 간결한 방법을 제공합니다.
function defined_map($value, $default) {
return (!isset($value) || is_null($value)) ? $default : $value;
// or return $value ? $default : $value;
}
$values = array($one, $two);
$defaults = array('one', 'two');
$values = array_map('defined_map', $values, $defaults);
올바른 테스트를 적용할 수 있도록 어떤 요소가 평가되는지 확인하기만 하면 됩니다.
php7.4 이후 null merge 할당을 수행할 수 있습니다.
$arr = array($one ??= "one?", $two ??= "two ?");
문서를 보려면 여기를 클릭하십시오.
더 좋은 방법이 있을지도 모르지만, 내 머릿속에 가장 먼저 떠오른 것은 이것이다.
echo (!$test) ? "Hello" : $test;
PHP에서는 Null이 false이므로 3진법을 사용할 수 있습니다.
alert($test ? $test : 'Hello');
편집:
이것은 빈 문자열에도 적용됩니다.
3항은 '==' 대신 '===' 등식을 사용하기 때문에
'===' 연산자를 사용하든 '==' 연산자를 사용하든 비어 있거나 null 문자열은 거짓입니다.내 답을 먼저 테스트해봐야겠어.
입력한 표기법을 확장하면 다음과 같은 결과가 나옵니다.
if (test) {
alert(test);
} else {
alert('Hello');
}
그러니까 이건 간단한... 엘스 구조에요PHP에서는 간단한 if...else가 '3진 표현식'이라고 불리는 것으로 구성할 수 있습니다.
alert($test ? $test : 'Hello');
JS와 동등한 것은 없습니다.alert
PHP에서 기능하지만 구조는 동일합니다.
alert((test == null || test == undefined)?'hello':test);
나도 최근에 똑같은 문제를 겪었어.이렇게 해결했습니다.
<?php if (empty($row['test'])) {
echo "Not Provided";}
else {
echo $row['test'];}?></h5></span></span>
</div>
데이터베이스 내의 값은 변수 $test에 있습니다.따라서 $test 행이 비어 있으면 에코 Not Provided
언급URL : https://stackoverflow.com/questions/4998178/if-null-use-other-variable-in-one-line-in-php
'sourcecode' 카테고리의 다른 글
열의 문자열에서 불필요한 부분 제거 (0) | 2022.11.27 |
---|---|
독트린 하이드레이션이 뭐죠? (0) | 2022.11.27 |
larabel 5.x에서는 많은 수와 속한 수의 비교 (0) | 2022.11.27 |
Jackson은 캐스팅 없이 JsonNode를 ArrayNode로 전환하는 방법을 알고 계십니까? (0) | 2022.11.27 |
C#, C++ 또는 Java 컴파일러를 구동하여 1+2+3+를 계산하는 방법...컴파일 시 +1000? (0) | 2022.11.27 |