PHP에서 동적 변수 이름에 중괄호 사용
동적 변수 이름을 사용하려고 합니다(실제 이름은 잘 모르겠습니다). 그러나 다음과 같습니다.
for($i=0; $i<=2; $i++) {
$("file" . $i) = file($filelist[$i]);
}
var_dump($file0);
수익은null
효과가 없다는 뜻이죠제가 찾는 구문이나 기법이 무엇인지 전혀 모르기 때문에 연구하기가 어렵습니다. $filelist
는 앞서 정의되어 있습니다.
그것들을 싸다{}
:
${"file" . $i} = file($filelist[$i]);
작업 예시
사용.${}
는 동적 변수를 작성하는 방법입니다.단순한 예:
${'a' . 'b'} = 'hello there';
echo $ab; // hello there
개요
PHP 에서는, 여분의 것을 넣을 수 있습니다.$
변수 앞에 배치하여 동적 변수를 만듭니다.
$$variableName = $value;
추천은 하지 않지만, 이 동작의 연쇄를 생각할 수도 있습니다.
$$$$$$$$DoNotTryThisAtHomeKids = $value;
할 수 있지만 강제적으로 할 수는 없습니다.$variableName
사이에{}
:
${$variableName} = $value;
사용.{}
는 변수 이름 자체가 다음과 같이 여러 값의 구성일 경우에만 필수입니다.
${$variableNamePart1 . $variableNamePart2} = $value;
단, 항상 다음을 사용하는 것이 좋습니다.{}
가독성이 높기 때문입니다.
PHP5와 PHP7의 차이점
항상 사용해야 하는 또 다른 이유{}
PHP5와 PHP7은 동적 변수를 처리하는 방법이 약간 다르며, 경우에 따라서는 결과가 달라질 수 있습니다.
PHP7에서 동적 변수, 속성 및 메서드는 PHP5에서 특수 케이스가 혼합된 것과 달리 왼쪽에서 오른쪽으로 엄격하게 평가됩니다.다음 예시는 평가 순서가 어떻게 바뀌었는지를 보여줍니다.
케이스 1:$$foo['bar']['baz']
- PHP5 삽입:
${$foo['bar']['baz']}
- PHP7 개입:
${$foo}['bar']['baz']
케이스 2:$foo->$bar['baz']
- PHP5 삽입:
$foo->{$bar['baz']}
- PHP7 개입:
$foo->{$bar}['baz']
케이스 3:$foo->$bar['baz']()
- PHP5 삽입:
$foo->{$bar['baz']}()
- PHP7 개입:
$foo->{$bar}['baz']()
케이스 4:Foo::$bar['baz']()
- PHP5 삽입:
Foo::{$bar['baz']}()
- PHP7 개입:
Foo::{$bar}['baz']()
사용해보십시오.{}
대신()
:
${"file".$i} = file($filelist[$i]);
질의에서 반환된 결과에 대해 이 작업을 자주 수행합니다.
예.
// $MyQueryResult is an array of results from a query
foreach ($MyQueryResult as $key=>$value)
{
${$key}=$value;
}
이제 $MyQueryResult['MyFieldname']가 아닌 $MyFieldname(에코문 등)만 사용할 수 있게 되었습니다.
네, 아마 게으르겠지만, 저는 문제가 생긴 적이 없어요.
Tom은 기존 어레이가 있는 경우 해당 어레이를 개체로 변환하고 다음과 같이 사용할 수 있습니다.
$r = (object) $MyQueryResult;
echo $r->key;
() 대신 {}을(를) 사용해 보십시오.
${"file".$i} = file($filelist[$i]);
동적으로 생성된 변수 값과 변수의 모든 값을 결합하는 솔루션이 있습니다.
if($_SERVER['REQUEST_METHOD']=='POST'){
$r=0;
for($i=1; $i<=4; $i++){
$a = $_POST['a'.$i];
$r .= $a;
}
echo $r;
}
저는 6개의 동일한 어레이를 가지고 있었고 다른 변수에 따라 적절한 어레이를 선택하고 값을 할당해야 했습니다.이 경우 $comp_cat은 "a"이므로 "a" 어레이를 선택해야 합니다(물론 "b"에서 "f" 어레이도 있습니다).
배열에서 변수 위치 값은 닫힘 괄호 뒤에 있습니다.
${'comp_cat_'}.$comp_cat.'_arr'}[1][0] = "FRED BLOGGS";
${'comp_cat_'}.$comp_cat.'_arr'}[1][1] = $file_arr';
에코 '첫 번째 어레이 값은 '.$comp_cat_a_arr[1][0].' 두 번째 값은 .$comp_cat_a_arr[1][1]입니다.
언급URL : https://stackoverflow.com/questions/9257505/using-braces-with-dynamic-variable-names-in-php
'itsource' 카테고리의 다른 글
Python 함수가 예외를 발생시키는 것을 어떻게 테스트합니까? (0) | 2023.02.06 |
---|---|
상수 포인터 vs 상수 값에서의 포인터 (0) | 2023.02.06 |
PHP(라인 피드)에 파일에 새 줄 쓰기 (0) | 2023.02.06 |
문자열 표현을 사용하지 않고 설정된 표준 시간대로 날짜 만들기 (0) | 2023.02.06 |
array_module 및 키 번호 변경 (0) | 2023.02.06 |