2012-03-23 11 views
5

私はコードベースを見ていて、私は質問がある行を見つけました。私が以前に見たことのないもので、誰かが私のために説明できるかどうか疑問に思っていました。コードは次のとおりです。

$variableName = $array[1]; 
$variableName{0} = strtolower($variableName{0}); 
$this->property = $variableName; 

中括弧は何に使用されていますか?以前は変数を変数名として定義するために中括弧を使用しましたが、これは同じですか?私はそれを説明するリソースをオンラインで見つけることはできないようですが、私が正しいものを探しているかどうかはわかりません。あなたは、単にでそれをテストすることができ

答えて

4

アクセス(非UTF8文字列で)そのインデックス{0} =>最初の文字

とシングルバイト:

$var='hello'; 
echo $var{0}; 
+0

興味深い。 1文字のsubstr()の代わりに素敵なショートカットです。テストしている変数の長さはすでに分かっています。 – opes

+1

私はとにかくそれを避けるでしょう。マルチバイト文字列を使用すると、不正な形式の文字列が取得されるためです。単一の文字(UTF-8を使用)にアクセスする必要がある場合は、mb_strlenを参照してください。 – dynamic

+0

ああ、良い情報です。あなたは毎日何か新しいことを学びます。ありがとう! – opes

2

それが文字列の最初の文字を設定しています小文字{}が配列または文字列のインデックスのために、[]角括弧と同じように動作し

<?php 
$variableName = strtolower(substr($variableName, 0, 1)) . substr($variableName, 1) 
+0

本質的に、ちょうどlcfirst()ですか?変数が文字列の場合に限ります。 – opes

+1

Lol。ええ、私はその機能のために使用したことがないので、専用のものが1つあることは知らなかった。しかし、はい、そうです。 – landons

1

カーリーブレース:それはこれと同じ機能を、文字列のショートカット演算子です。私はそれがperlから借用されていると推測しています。ここで角括弧は配列に使われ、中括弧はハッシュに使われます。しかし、PHPの配列とハッシュは同じことです。