>

PHP 7.2.2를 사용하고 있습니다

PHP 설명서

와이즈 비즈

위 단락과 관련하여 제 생각에는 의심/의문을 따릅니다 :

<올>
  • 여기서 '범위 밖의 오프셋'이란 무엇입니까?
  • 정수가 아닌 유형은 정수로 변환됩니다. 유형 변환이 발생할 문자열에서 오프셋 또는 문자입니까?
  • '잘못된 오프셋 유형'이란 정확히 무엇을 의미합니까?
  • '할당 된 문자열의 첫 번째 문자 만 사용되는시기'
  • 마지막 문장 '이전에는 NULL 바이트를 할당했다'는 것은 무엇을 의미합니까? NULL 바이트는 무엇을 의미합니까?
  • 누군가가 적절한 작업 코드 예제를 사용하여 이해하기 쉬운 언어로 모든 의심/질문에 대답 할 수 있습니까?

    WarningWriting to an out of range offset pads the string with spaces. Non-integer types are converted to integer. Illegal offset type emits E_NOTICE. Only the first character of an assigned string is used. As of PHP 7.1.0, assigning an empty string throws a fatal error. Formerly, it assigned a NULL byte.


    • 답변 # 1

      매뉴얼의이 부분은 문자열을 문자 배열로 취급하는 것과 관련이 있습니다.

      "out of range"offset은 현재 문자열 자체보다 긴 위치에있는 정수 인덱스를 의미합니다 (예 : 와이즈 비즈    $x = "foo"; $x[10] = 'o'; 의 결과   $x 가되고

      정수가 아닌 인덱스 값을 사용하는 경우 문자열의 인덱스에 액세스하기 전에 인덱스 값이 정수로 변환됩니다 (예 : 와이즈 비즈   foo o 의 결과   $x = "foo"; $y = $x[true]; 의 가치를  - $y

      잘못된 오프셋 유형은 일반적으로 배열 오프셋으로 사용할 수없는 것입니다 (예 : 와이즈 비즈  - $x[1] 로 문자열 인덱싱  경고를 일으킨다

      첫 번째 chracter 조각은 기존 문자열의 색인에 문자열을 할당하려고하면 지정된 문자열의 첫 번째 문자 만 사용됨을 의미합니다. 와이즈 비즈   o 의 결과   class Foo() {} 가되고 ;

      인덱스에서 문자열에 빈 문자열 값을 할당하면 "널"바이트 $x[new Foo()]; 를 할당하는 대신 오류가 발생합니다. 예 : 와이즈 비즈 치명적입니다.

    • 답변 # 2

      예를 들면 다음과 같습니다. $x = "foo"; $x[0] = "hi";

      PHP에서 문자열은 바이트 배열입니다. 숫자 색인으로 문자열에서 특정 문자 (바이트)를 참조 할 수 있습니다. 오프셋이 $x 사이 인 경우 범위 내에 있습니다.  (첫 번째 문자)와 hoo  (마지막 문자).

      이 예제는 인덱스 0에서 3까지를 사용하여 문자열의 문자를 반복합니다.

      \0
      
      

      범위를 벗어난 오프셋은 strlen-1 이상의 인덱스입니다.이 코드는 알림을 생성합니다 :

      $x[0] = ''
      
      
      와이즈 비즈

      정수가 아닌 유형을 색인으로 사용하면 유형이 정수로 변환됩니다. 문자열 $string = 'word';  이 예에서 (잘못된 오프셋 유형)은 0 로 변환됩니다. 문자열의 첫 문자가 바뀝니다.

      strlen($string) - 1
      
      

      문자가 두 개 이상인 문자열을 할당하려고하면 첫 번째 문자 만 사용되며 단어 끝을 넘어 색인에 할당하려고하면 삽입 광고 색인에 공백이 채워집니다.

      $len = strlen($string);
      for ($i=0; $i < $len; $i++) {
          $char = $string[$i];
          var_dump($i, $char);
      }
      
      
      $char = $string[4]; var_dump($char); // string ''

    관련 자료

  • 이전 delphi - 메인 폼을 닫는 대신 숨기는 방법?
  • 다음 javascript - 스타일링 된 컴포넌트/반응