PHP 배열 Key 강제 형식 변환 실현 원리 분석
먼저 다음 코드 를 살 펴 보 겠 습 니 다.
$arr = [
"1" => "a",
"01" => "b",
1 => "aa",
1.1 => "aaa",
"0.1" => "bb",
];
var_dump($arr);
// array(3) {
// [1] =>
// string(3) "aaa"
// '01' =>
// string(1) "b"
// '0.1' =>
// string(2) "bb"
// }
어?우리 가 정의 한"1",1 아래 표 시 된 값 은 모두 1.1 의"aa"가 되 었 습 니까?맞습니다.PHP 의 배열 Key 값 은 숫자 와 문자열 형식 만 받 아들 이 며,Key 가 문자열 일 때 숫자 형식 으로 강제로 변환 되 며,형식 강제 변환 규칙 을 준수 합 니 다.부동 소수점 도 마찬가지 로 아래 에서 정 리 된 정형 으로 직접 바 뀌 었 다.
그럼'0.1'과'01'은 왜 아직도 있 습 니까?우선,"01"은 표준 10 진수 가 아니 라 정형 으로 변환 할 수 없 기 때문에"01"입 니까?아니면 문자열 아래 에 표 시 됩 니까?"0.1"입 니까?그것 은 물론 표준 10 진법 수치 도 아니다.여 기 는 문자열 변환 숫자의 강제 형식 변환 원칙 에 위배 되 는 것 입 니 다.변수의 강제 변환 에서 이 두 문자열 은 모두 0 으로 바 뀌 지만 배열 에 서 는 그렇지 않 습 니 다.여 기 는 구덩이 일 수도 있 고 주의해 야 할 부분 입 니 다.
PHP 공식 문서 에 제 시 된 Key 값 변환 설명 은 다음 과 같 습 니 다.
4.567917.합 법 적 인 정형 값 을 포함 하 는 문자열 은 정형 으로 변 환 됩 니 다.예 를 들 어 키 이름'8'은 실제 8 로 저 장 됩 니 다.그러나'08'은 합 법 적 인 십 진법 수치 가 아니 기 때문에 강제로 전환 하지 않 는 다
a = ['a'];
$a[2] = 'b';
$a[] = 'c';
$a['1'] = 'd';
// ?
foreach ($a as $v) {
echo $v, ',';
}
// ?
for ($i = 0; $i < count($a); ++$i) {
echo $a[$i], ' ,';
}
여러분,먼저 실행 하지 마 세 요.코드 를 직접 보고 이 두 코드 의 출력 결과 가 무엇 인지 알 수 있 는 지 확인 한 다음 에 실행 하 세 요.결과 가 당신 이 생각 하 는 것 과 같 는 지 확인 하 세 요.테스트 코드: https://github.com/zhangyue0503/dev-blog/blob/master/php/201910/source/PHP 배열 Key 에 대한 강제 변환.php
참고 자료: https://www.php.net/manual/zh/language.types.array.php
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
laravel에 yo에서 angularJs&coffeescript를 사용할 수 있도록 한다.먼저 yo 명령을 사용할 수 있어야하므로 아래에서 설치 global에 설치한 곳에서 laravel의 프로젝트 루트로 이동. 클라이언트 코드를 관리하는 디렉토리를 만들고 이동합니다. 클라이언트 환경 만들기 이것으로 히...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.