2016-06-29 9 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を返します:あなたはそれを "9penguins" のような文字列を与えると、あなたがタイプジャグリング9.

PHPマニュアルを取得します$ 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はあなたのインデックスが正確であるために整数であることを期待しています。それに文字列を与えると、数値として解析しようとします。可能でない場合は、デフォルトでゼロになります。

追記: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

関連する問題