2

この 2 つのインデックスに違いはありますか? もしそうなら、どちらを使用するのが良いでしょうか? パフォーマンスと違いについての情報があれば教えてください。

$array[$data]
$array["$data"]

前もって感謝します!

*編集; ちょうど出くわしました$array["{$data}"]、それについて何か情報はありますか?

4

2 に答える 2

5

個人的には、明快さのために最初のバージョンを選びます。PHPはあなたのためにそれを整理します:

$a = range(1,10);
$data = 2;
echo $a[$data];//3
$b = array('foo' => 'bar');
echo $b[$data];//notice undefined offset, echoes nothing!
$data = 'foo';
echo $b[$data];//echo bar

他のいくつかの理由: '$data'!== "$data"、一重引用符と二重引用符には違いがあるためです。したがって、2 番目の方法はエラーが発生しやすくなります。
配列の使用は面倒です:

$a[$data['key']];//is clear: use value of $data -> key 

に比べ:

$a["{$data[key]}"];
//or
$a["{$data['key']}"];

個人的な好みの余地があります。それは良いことのように思えるかもしれませんが、Git のような SVC システムを使用してチームで作業する場合、これはすぐに苦痛であることがわかります...信じてください!

ノート:

質問の編集について("{$var}")。これはComplex (curly) syntaxと呼ばれ、あいまいさを避けるためにあります。

echo "some string with $an[array][value]";

パーサーは何をすべきか? エコーする必要があります:

"some string with <value of$an>[array][value]";

配列のキー アクセサーを文字列定数として扱う、または次のことを意味します。

"some string with <$an[array][value]>";

「some string with foobar」「some string with array[array][value]」がエコーされる可能性があるため、式をグループ化します。

echo "some string with {$an[array][value]}";
于 2013-09-20T10:57:28.513 に答える
1

二重引用符を使用すると、変数がそのまま正確に機能するため、特定のケースでは違いはありません。

ただし、実際のテキストを使用すると、連想配列で非常に大きな違いが生じます。

$array[fluffeh]; // Will not work
$array['fluffeh']; will reference the key called fluffeh in the array.

二重引用符内の変数は、文字列の一部であるかのように機能します。ただし、変数を単一引用符で囲むと、期待どおりに機能しません。

$var='fluffeh';
$array[$var];   // Will find the element 'fluffeh'
$array["$var"]; // Will find the element 'fluffeh'
$array['$var']; // Will try to find an element called '$var'
于 2013-09-20T10:59:02.190 に答える