3

PHPはかなり新しく、変数などを文字列に連結するための適切な構文を理解しようとしています。

例えば:

A    $mydir = "../../uploads/images/'".$id."'/thumb"; 

B    $mydir = "../../uploads/images/".$id."/thumb"; 

C    $mydir = '../../uploads/images/'.$id.'/thumb"; 

D    $mydir = "../../uploads/images/$id/thumb";

どちらが正しいですか?

文字列を変数で終了するが、次の要素を定義するためにコンマを使用する必要がある場合はどうでしょうか。

    mkdir('../../uploads/images/' . $newid , 0777);

変数が真ん中にあるときはどうですか?

    mkdir('../../uploads/images/' . $newid . '/thumb', 0777);

最後に、誰かがPHPリファレンスに適したリソースを推奨できますか?W3Schoolsはそれをカットしていません...

4

7 に答える 7

3

PHP の文字列には、二重引用符または単一引用符を使用できます。この 2 つには違いがあります。二重引用符を使用すると、PHP は文字列内の変数を補間します。例えば:

$var = 'test';
echo "This is a $var";  // outputs: This is a test

echo 'This is a $var'; // outputs: This is a $var

このため、文字列を二重引用符で囲むと、文字列が出力される前に PHP によって補間される必要があるため、少し遅くなります。PHP の文字列に対する nowdoc と heredoc のサポートもあります。

その違い以外に違いはなく、次の例のように同じ意味で使用できます。

echo 'I like ' . "concatenating" . ' strings';

ただし、コード全体で一貫性を保つことはおそらく良い考えです。詳細については、マニュアルを参照してください。

于 2012-06-06T20:08:25.277 に答える
2

PHP マニュアルに移動します: http://php.net/manual/en/language.types.string.php

さまざまな種類の文字列については、次のとおりです。

二重引用符で囲まれた文字列を使用する場合、次のように文字列内に変数を含めることができます。

$name = "world";
print("Hello $name");

一重引用符は変数を展開しません。

ピリオドは単なる連結演算子です。したがって、変数を連結して終了する場合は問題ありません。つまり、これは問題ありません:

 $name = "world";
 $greeting = "Hello ".$name;
于 2012-06-06T20:06:17.527 に答える
1

BとDが正解です。PHP での一重引用符と二重引用符の唯一の違いは、二重引用符の間の内容が PHP 用に解析されることです。php.netから、

文字列が二重引用符またはヒアドキュメントで指定されている場合、変数はその中で解析されます。

A - 不要な単一引用符のペアがあります。

B - ファイン

C - 末尾の引用符が正しくありません。一重引用符で終わる必要があります。

D - ファイン

于 2012-06-06T20:04:48.557 に答える
1

AまたはBを使用しないでください。二重引用符がある場合は、Dを使用すると読みやすくなります。使えないというわけではありません。文字列を読むのが苦手な方はどうぞ!

文字列の後のカンマは関係ありません

mkdir('../../uploads/images/' . $newid , 0777); // works
mkdir('../../uploads/images/' . $newid . '/thumb', 0777); // works too
mkdir("../../uploads/images/$newid" , 0777); // works and is nicer to read
mkdir("../../uploads/images/$newid/thumb", 0777); // also nicer to read

文字列に必要な値が変数でない場合は、変数を作成するか、(補間ではなく) 通常の文字列連結を使用する必要があります。

于 2012-06-06T20:06:01.947 に答える
0

連結 B または C はどちらも機能しますが、相対ファイル パスの場合は通常、

$_SERVER['DOCUMENT_ROOT']

構文を変更し、サーバーの html ルート フォルダーを基準にしてファイルにアクセスします。つまり、構文は次のようになります。

$_SERVER['DOCUMENT_ROOT']."/folder/foler/".$id."/thumb";
于 2012-06-06T20:05:34.727 に答える
0

Aはしません。

B最高です。

C には構文ミスがあります。さらに、文字列には通常 を使用します"が、一方、'は html のようにフォーマットするときに使用される'<a href="google.com">Google!</a>'ため、引用符をエスケープする必要がなく、コードが見栄えがします。

D は機能しますが、推奨されません。たとえば、D では `"blah $this -> name blah" は機能しません。それが理由です。

于 2012-06-06T20:06:10.733 に答える
0

選択リストから、「B」は問題ありません。「D」も問題ありません。私のお気に入りのリファレンスは公式マニュアルです: http://www.php.net/manual/en/

于 2012-06-06T20:07:20.037 に答える