sourcecode

null이 PHP의 한 줄에 다른 변수를 사용하는 경우

copyscript 2022. 11. 27. 21:22
반응형

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와 동등한 것은 없습니다.alertPHP에서 기능하지만 구조는 동일합니다.

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

반응형