복붙노트

PHP에서 문자열의 중괄호

카테고리 없음

PHP에서 문자열의 중괄호

PHP의 문자열 리터럴에서 {} (중괄호)의 의미는 무엇입니까?

해결법

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

    1.

    이것은 문자열 보간을위한 복잡한 (곱슬) 구문입니다. 매뉴얼에서 :

    종종이 구문은 필요하지 않습니다. 예를 들면 다음과 같습니다.

    $a = 'abcd';
    $out = "$a $a"; // "abcd abcd";
    

    정확히 다음과 같이 작동합니다.

    $out = "{$a} {$a}"; // same
    

    그래서 중괄호는 불필요합니다. 하지만 이것은:

    $out = "$aefgh";
    

    오류 수준에 따라 $ aefgh라는 변수가 없으므로 작업하지 않거나 오류가 발생하므로 수행해야 할 작업은 다음과 같습니다.

    $out = "${a}efgh"; // or
    $out = "{$a}efgh";
    
  2. ==============================

    2.

    나에 관해서는, 중괄호는 연결을 대신하는 역할을하며, 더 빠르게 입력하고 코드를 깔끔하게 보입니다. 작은 따옴표 ( '')를 사용하면 제공되는 변수의 리터럴 이름을 얻을 수 있으므로 내용을 PHP에서 파싱하므로 큰 따옴표 ( "")를 사용해야합니다.

    <?php
    
     $a = '12345';
    
    // This works:
     echo "qwe{$a}rty"; // qwe12345rty, using braces
     echo "qwe" . $a . "rty"; // qwe12345rty, concatenation used
    
    // Does not work:
     echo 'qwe{$a}rty'; // qwe{$a}rty, single quotes are not parsed
     echo "qwe$arty"; // qwe, because $a became $arty, which is undefined
    
    ?>
    
  3. ==============================

    3.

    예:

    $number = 4;
    print "You have the {$number}th edition book";
    //output: "You have the 4th edition book";
    

    중괄호가 없으면 PHP는 $ numberth라는 변수를 찾으려고 시도하지만 존재하지 않습니다!

  4. ==============================

    4.

    또한 반복자에 따라 속성 이름이 다른 객체 속성에 액세스하는 것이 유용하다는 것을 알았습니다. 예를 들어, 아래의 패턴을 시간, 일, 월의 기간으로 사용했습니다.

    $periods=array('hour', 'day', 'month');
    foreach ($periods as $period)
    {
        $this->{'value_'.$period}=1;
    }
    

    이와 동일한 패턴을 사용하여 클래스 메소드에 액세스 할 수도 있습니다. 문자열과 문자열 변수를 사용하여 같은 방식으로 메서드 이름을 빌드하면됩니다.

    단순히 기간별 값 저장을 위해 배열을 사용하는 것이 쉽습니다. 이 애플리케이션이 PHP 만인 경우 동의합니다. 클래스 속성이 데이터베이스 테이블의 필드에 매핑 될 때이 패턴을 사용합니다. 직렬화를 사용하여 데이터베이스에 배열을 저장할 수는 있지만 개별 필드의 색인을 생성해야하는 경우 비효율적이며 무의미합니다. 필자는 종종 반복자에 의해 키워지는 필드 이름의 배열을 두 세계의 장점에 추가합니다.

    class timevalues
    {
                                 // Database table values:
        public $value_hour;      // maps to values.value_hour
        public $value_day;       // maps to values.value_day
        public $value_month;     // maps to values.value_month
        public $values=array();
    
        public function __construct()
        {
            $this->value_hour=0;
            $this->value_day=0;
            $this->value_month=0;
            $this->values=array(
                'hour'=>$this->value_hour,
                'day'=>$this->value_day,
                'month'=>$this->value_month,
            );
        }
    }
    
  5. ==============================

    5.

    여기에 내가 하나의 wordpress 플러그인에서 얻은 코드가있다.

    $data = $wpdb->get_results("select * from {$wpdb->prefix}download_monitor_files");
    

    이것은 복잡한 문자열을 포맷하는 데 정말 편리한 기술입니다.

  6. from https://stackoverflow.com/questions/2596837/curly-braces-in-string-in-php by cc-by-sa and MIT lisence