itsource

PHP에서 동적 변수 이름에 중괄호 사용

mycopycode 2023. 2. 6. 23:31
반응형

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

반응형