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
'source' 카테고리의 다른 글
:터치 CSS 유사 클래스 등? (0) | 2023.09.09 |
---|---|
각도 2 - 하위 모듈 라우팅 및 중첩 (0) | 2023.09.09 |
두 번째 매개 변수를 기준으로 튜플 정렬 (0) | 2023.09.09 |
HTML 테이블을 .xlsx 파일로 내보내는 방법 (0) | 2023.09.09 |
Jquery live() vs delegate() (0) | 2023.09.09 |