2016-06-29 4 views
1

대괄호 []를 사용하여 배열과 같은 PHP 문자열 안에있는 요소를 참조 할 때 [2]와 같은 숫자를 사용하여 문자열에서 특정 문자를 선택할 수 있습니다. 그러나 [ "example"]과 같은 문자열 인덱스를 사용하면 항상 [0]과 동일한 결과를 반환합니다.

<?php 
$str="Hello world."; 
echo $str; // Echos "Hello world." as expected. 
echo $str[2]; // Echos "l" as expected. 
echo $str["example"]; // Echos "H", not expected. 

$arr=array(); 
$arr["key"]="Test." 
echo $arr["key"]; // Echos "Test." as expected. 
echo $arr["invalid"]; // Gives an "undefined index" error as expected. 
echo $arr["key"]; 

[0]과 (과) 동일한 결과를 반환하는 이유는 무엇입니까?

+0

'$ str을 [ "예"]'0을 반환' $ str = "Hello world."첫 글자 "H"를 반환합니다. –

+0

여기를 참고하십시오 : http://stackoverflow.com/questions/17193597/strings-as-arrays-in-php – mitkosoft

+0

'$ str [ "example"]'='$ str [ "0"] 예를 들어'hense h '가 수신 됨 –

답변

7

PHP는 유형이 아닌 유형의 변수를 피팅 유형으로 변환하기 위해 유형 저글링을 사용합니다. 귀하의 경우, PHP는 귀하의 인덱스가 정확한 숫자가 될 것으로 기대합니다. 문자열을 주면 숫자로 구문 분석합니다. 가능하지 않은 경우 기본값은 0입니다.

(!) 참고 : 당신이 "9penguins"와 같은 그것을 문자열을주는 경우에, 당신은 타입 저글링에 9

PHP 매뉴얼 얻을 것이다 :에서 http://php.net/manual/de/language.types.type-juggling.php

+2

Nitpick : 문자열을 숫자로 변환하는 것은 항상 "가능"합니다. 문자열에 다른 유용한 숫자가 없으면 결과는 단순히 '0'일 수 있습니다. → http://php.net/manual/en/language.types.string.php#language.types.string.conversion – deceze

관련 문제