복붙노트

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

PHP

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

나는 동적 변수 이름을 사용하려고한다. (나는 그들이 실제로 무엇을 호출하는지 모르겠다.) 그러나 꽤 많이 이것을 좋아한다.

for($i=0; $i<=2; $i++) {
    $("file" . $i) = file($filelist[$i]);
}

var_dump($file0);

반환 값은 작동하지 않는다고 알려주는 null입니다. 내가 찾고있는 구문이나 기술이 무엇인지 모르겠다. 연구하기가 어렵다. $ filelist는 이전에 정의되어 있습니다.

해결법

  1. ==============================

    1.

    {}로 묶으세요.

    ${"file" . $i} = file($filelist[$i]);
    

    $ {}을 (를) 사용하는 것은 동적 변수를 만드는 간단한 방법입니다.

    ${'a' . 'b'} = 'hello there';
    echo $ab; // hello there
    
  2. ==============================

    2.

    PHP에서는 동적 변수로 만들기 위해 변수 앞에 여분의 $를 넣을 수 있습니다.

    $$variableName = $value;
    

    권장하지는 않지만이 동작을 연결할 수도 있습니다.

    $$$$$$$$DoNotTryThisAtHomeKids = $value;
    

    당신은 {variable} 사이에 $ variableName을 넣을 수는 있지만 그렇게 할 수는 없습니다 :

    ${$variableName} = $value;
    

    {} 사용은 변수 이름 자체가 여러 값으로 구성된 경우에만 필수입니다.

    ${$variableNamePart1 . $variableNamePart2} = $value;
    

    그럼에도 불구하고 더 읽기 쉽기 때문에 항상 {}을 사용하는 것이 좋습니다.

    {}를 항상 사용하는 또 다른 이유는 PHP5와 PHP7이 약간 다른 동적 변수 처리 방법을 사용하기 때문에 경우에 따라 결과가 달라지기 때문입니다.

    PHP5에서는 PHP5의 특수한 경우와 달리 동적 변수, 속성 및 메서드가 왼쪽에서 오른쪽 순서로 엄격하게 평가됩니다. 아래 예는 평가 순서가 어떻게 변경되었는지를 보여줍니다.

  3. ==============================

    3.

    () 대신 {}을 (를) 사용해보십시오.

    ${"file".$i} = file($filelist[$i]);
    
  4. ==============================

    4.

    쿼리에서 반환 된 결과에서이 작업을 자주 수행합니다.

    e.

    // $MyQueryResult is an array of results from a query
    
    foreach ($MyQueryResult as $key=>$value)
    {
       ${$key}=$value;
    }
    

    이제 $ MyFieldname을 사용하면됩니다. ($ echo "myFieldname"대신에 echo 문을 사용하는 것이 더 쉽습니다.) $ MyQueryResult [ 'MyFieldname']

    네, 아마 게으르 겠지만, 나는 전혀 문제가 없었습니다.

  5. ==============================

    5.

    Tom이 기존 배열을 가지고 있다면 그 배열을 객체로 변환하여 다음과 같이 사용할 수 있습니다 :

    $r = (object) $MyQueryResult;
    echo $r->key;
    
  6. ==============================

    6.

    나는 동적으로 생성 된 변수 값에 대한 솔루션을 가지고 있고 변수에 모든 값을 결합했습니다.

    if($_SERVER['REQUEST_METHOD']=='POST'){
        $r=0;
        for($i=1; $i<=4; $i++){
            $a = $_POST['a'.$i];
            $r .= $a;
        }
        echo $r;
    }
    
  7. ==============================

    7.

    나는 6 개의 동일한 배열을 가진 위치에 있었고 다른 변수에 따라 올바른 것을 선택하고 값을 할당해야했습니다. 여기에 나와있는 경우에는 $ comp_cat이 'a'이므로 'a'배열 ( "b"는 'f'배열)을 선택해야했습니다.

    배열의 변수 위치 값은 닫는 중괄호 뒤에옵니다.

  8. from https://stackoverflow.com/questions/9257505/using-braces-with-dynamic-variable-names-in-php by cc-by-sa and MIT lisence