私はちょうど非常に奇妙なphpコードに出くわしました:
$oink{'pig'} = 1;
var_dump($oink);
$oink{'pig'} = '123123';
echo $oink{'pig'}; /* => 123123 */
echo $oink['pig']; /* => 123123 */
配列のように機能しますが、マニュアルには記載されていません。これは何ですか?
ドキュメントに関するこのコメントによると、これは単なる別の表記法であり、おそらくPerl構文に似せて設計されています: http://www.php.net/manual/de/language.types.array.php#99015
更新:この回答が最初に投稿されたとき、PHPマニュアルには、この表記に関する公式情報はありませんでした。ただし、2014年には、上記のコメントが削除され、 Pacerierの回答によると のように、この表記はマニュアルに正式に記載されています。
マニュアルに記載されていますが、あいまいです。
http://www.php.net/manual/en/language.types.string.php#language.types.string.substr
一言で言えば、中括弧は1文字のみにアクセスします(完全な文字列を追加してみると、最初の文字のみが返されることがわかります)。また、非推奨であるため、使用を避けます。
PHP 7.4以降の中括弧は、配列にアクセスするために非推奨になりました。
https://wiki.php.net/rfc/deprecate_curly_braces_array_access