source

PHP에서 여러 변수를 선언하는 적절한 방법

ittop 2023. 9. 9. 10:15
반응형

PHP에서 여러 변수를 선언하는 적절한 방법

저는 수년간 PHP로 개인 스크립트를 코딩해왔고 에러 디스플레이를 끄는 데 익숙해졌습니다.저는 이 스크립트들 중 일부를 곧 공개할 예정이며 적절한 방법으로 진행하고 싶습니다.

오류 표시를 끄는 유일한 이유는 set() 덕분에 모든 var를 사용하기 전에 테스트할 필요가 없기 때문입니다.

자, 여기 제 질문이 있습니다.

이것보다 여러 대표팀을 선언하는 더 좋은 방법이 있습니까?

<?php
  // at the begining of my main file
  if (!isset($foo))  ($foo = '');
  if (!isset($bar))  ($bar = '');
  if (!isset($ping)) ($ping = '');
  if (!isset($pong)) ($pong = '');
  // etc. for every single var
?>

예를 들어 다음과 같은 것이 있습니다.

<?php
  var $foo, $bar, $ping, $pong;
?>
<?php
  $foo = $bar = $ping = $pong = '';
?>

스크립트인데 어떤 변수를 사용하는지 알고 있다면 해당 변수가 이전에 선언되었는지 확인하기 위해 리소스를 사용하려는 이유는 무엇입니까?

아까 댓글로 올렸는데 어떤 분이 답변으로 제출해달라고 제안해주셨어요.

제가 생각할 수 있는 가장 짧고 간단한 방법은 다음과 같습니다.

$foo = $bar = $ping = $pong = '';

저는 종종 빈 문자열 대신 false로 설정하는 것을 선호합니다. 그러면 === false로 미래에 항상 체크를 수행할 수 있습니다. 하지만 이는 단지 선호 사항일 뿐이며 이러한 변수를 어떻게 사용하고 무엇에 사용하는지에 따라 달라집니다.

당신의.if()와 함께isset()시도하는 것이 올바른 방법입니다!

그러나 Ternary Operator를 사용하여 조금 더 짧게/읽을 수 있게 작성할 수 있습니다.

$foo = isset($foo) ? $foo : '';

첫번째$foo다음 값으로 설정됩니다.?그 후의 상태가 되면.=true이고, 그렇지 않으면 다음 값으로 설정됩니다.:. 조건(사이)=그리고.?)는 항상 부울로 주조됩니다.

PHP 5.3 이후로 더 짧게 쓸 수 있습니다.

$foo = isset($foo) ?: '';

설정합니다.$foo로.TRUE아니면FALSE(무엇에 따라)isset()반환), @Decent Dabbler가 코멘트에서 지적한 바와 같이.제거하기isset()로 설정할 것입니다.''또한 정의되지 않은 변수 알림도 표시됩니다(생산 중은 아님).

PHP 7부터는 널 연합 연산자를 사용할 수 있습니다.

$foo = $foo ?? '';

이것은 어떤 오류도 던지지 않지만 다음과 같이 평가됩니다.TRUE한다면$foo다음과 같이 평가할 속기 연산자와 반대로 존재하고 비어 있습니다.FALSE변수가 비어 있는 경우.

이를 수행하는 다소 우회적인 방법은 변수 이름을 배열에 넣은 다음 다음 다음과 같은 Ternary Operator로 루프하는 것입니다.powtac의 대답.

$vars = array('foo', 'bar', 'ping', 'pong');
$defaultVar = '';

foreach($vars as $var)
{
    $$var = isset($$var) ? $$var : $defaultVar;
}

다른 답변에서 언급된 바와 같이 버전 5.3 이후로 PHP는 위의 코드를 다음과 같이 작성할 수 있습니다.

$vars = array('foo', 'bar', 'ping', 'pong');
$defaultVar = '';

foreach($vars as $var)
{
    $$var = isset($$var) ?: $defaultVar;
}

변경된 Ternary Operator를 기록합니다.

OOP에서는 다음과 같은 방법을 사용할 수 있습니다.

protected $password, $full_name, $email;

OOP가 아닌 경우 코드로만 선언하면 값을 할당하지 않으면 Undefined 상태가 됩니다.

$foo; $bar; $baz;

$set_foo =  (isset($foo)) ? $foo : $foo = 'Foo';
echo $set_foo;

그냥 설정하지 그래요?

<?php
$foo = '';
$bar = '';
//etc
?>

가치를 보존하려는 경우 일반적으로 그렇습니다.문장에 두 번째 쌍의 괄호가 필요하지 않습니다.

if (!isset($foo)) $foo = '';

충분합니다.

의 문제를 해결하기 위해서는

  <?php
  $foo = $bar = $ping = $pong = '';
  ?>

던지기

참고: 정의되지 않은 변수: ...

  <?php
  @$foo = $bar = $ping = $pong = '';
  ?>

수정하지는 않지만 표시되지 않으며 스크립트의 구문 분석을 중지하지도 않습니다.

언급URL : https://stackoverflow.com/questions/11025250/proper-way-to-declare-multiple-vars-in-php

반응형