PHP 7.2.2를 사용하고 있습니다
PHP 설명서
와이즈 비즈위 단락과 관련하여 제 생각에는 의심/의문을 따릅니다 :
<올>누군가가 적절한 작업 코드 예제를 사용하여 이해하기 쉬운 언어로 모든 의심/질문에 대답 할 수 있습니까?
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
-
답변 # 2
예를 들면 다음과 같습니다.
PHP에서 문자열은 바이트 배열입니다. 숫자 색인으로 문자열에서 특정 문자 (바이트)를 참조 할 수 있습니다. 오프셋이$x = "foo"; $x[0] = "hi";
$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 ''
관련 자료
- excel - 범위에서 일치하지 않는 첫 번째 기준 가져 오기
- java - 반복되는 문자가 포함되지 않은 첫 번째 문자 집합을 문자열에서 나란히 찾는 방법
- Swift string - 스위프트 - 문자열 :높이에서 첫 번째 문자 위치를 계산합니까?
- assembly - MIPS에서 문자열의 첫 문자 만 바꾸려면 어떻게해야합니까?
- sas - 첫 번째 데이터가 문자 인 경우 일부 명령을 수행하고 숫자 인 경우 다른 명령을 수행하기 위해 'if ~ else if'함수를 사용하고 싶습니다
- python - 코드의 첫 문자와 마지막 문자를 인쇄 할 수 없습니다
- javascript - RegExp 첫 문자는 점과 숫자 만 사용할 수 없습니다
- java - scanneruseDelimiter를 사용하여 입력 파일의 첫 문자를 잘못 읽었습니다
- c - 소문자로 된 모든 문자를 사용하여 단어의 첫 문자를 대문자로 한 다음 인쇄하는 방법
- javascript - readfilesync - 왜 문자열의 첫 문자 만 반환됩니까?
- 첫 문자와 마지막 문자를 무시하기위한 정규식
- c# - 구분 기호로 문자열의 처음 다섯 문자를 얻는 방법
- algorithm - Elixir에서 "문자열의 첫 번째 고유 문자"해결
- awk에서 줄의 첫 번째 알파벳 문자 색인을 추출하는 방법
- php - 다중 선택 값이 첫 번째 문자 만 인쇄합니다
- javascript - react js - split ()은 첫 번째 문자를 무시합니다
- regex - 정력 - 리터럴 문자열의 첫 번째 문자 만 일치시키는 패턴
- text processing - 첫 번째 문자가 마지막 문자와 같은지 확인합니까?
- javascript - 두 단어에서 첫 번째 문자를 가져 오는 방법
- html - 여러 텍스트 노드를 사용하여 Javascript에서 클릭의 문자 오프셋을 안정적으로 얻으려면 무엇을 사용할 수 있습니까?
매뉴얼의이 부분은 문자열을 문자 배열로 취급하는 것과 관련이 있습니다.
"out of range"offset은 현재 문자열 자체보다 긴 위치에있는 정수 인덱스를 의미합니다 (예 : 와이즈 비즈
정수가 아닌 인덱스 값을 사용하는 경우 문자열의 인덱스에 액세스하기 전에 인덱스 값이 정수로 변환됩니다 (예 : 와이즈 비즈$x = "foo"; $x[10] = 'o';
의 결과$x
가되고foo o
의 결과$x = "foo"; $y = $x[true];
의 가치를 -$y
잘못된 오프셋 유형은 일반적으로 배열 오프셋으로 사용할 수없는 것입니다 (예 : 와이즈 비즈 -
첫 번째 chracter 조각은 기존 문자열의 색인에 문자열을 할당하려고하면 지정된 문자열의 첫 번째 문자 만 사용됨을 의미합니다. 와이즈 비즈$x[1]
로 문자열 인덱싱 경고를 일으킨다o
의 결과class Foo() {}
가되고 ;인덱스에서 문자열에 빈 문자열 값을 할당하면 "널"바이트
$x[new Foo()];
를 할당하는 대신 오류가 발생합니다. 예 : 와이즈 비즈 치명적입니다.