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 |