ホームページ > バックエンド開発 > PHPチュートリアル > PHP の構文は一重引用符と二重引用符に分かれていますか?

PHP の構文は一重引用符と二重引用符に分かれていますか?

WBOY
リリース: 2016-06-23 14:17:54
オリジナル
1131 人が閲覧しました

この投稿の最終編集者は u011523116 2013-08-01 20:12:13

//a.php<?phpprint'AAA';       //用单引号,语法对!echo'BBB';       //用单引号,语法对!?>
ログイン後にコピー


<?php//b.phpprintf'CCC';     //用单引号,错误!?>
ログイン後にコピー


1.a.php、どちらの文も正しいのですが、なぜですか?
PHP 言語は一重引用符と二重引用符を区別しませんか?

2.b.php、このステートメントは間違っています、なぜですか?


ディスカッションへの返信(解決策)

1. 本来は正しいです。文字列は一重引用符または二重引用符のペアで囲むことができます

2. printf は関数です。これは print とは異なります。したがって、 printf('ccc'); を使用する必要があります

1. そもそも、文字列は一重引用符のペアまたは二重引用符のペアで囲むことができます

2. printf は関数です。print と echo の場合は、 printf('ccc'); を使用します。C 構文では、一重引用符と二重引用符はまったく異なる概念です。決して混ぜないでください。

php 構文では、それらは同じように見えますか?

php 関数も非常に奇妙です。

括弧()など

一部省略できる部分があります。

私は以前にこの種の疑問に遭遇したことがあります。特にデータベースクエリ操作と組み合わせる場合、一重引用符と二重引用符の違いはさらに大きくなります。

オンライン情報を見ました。リンクは http://blog.csdn.net/wangjunhe/article/details/8191880 です。

収穫は少なくないので、見てみるのもいいでしょう。

1. 一重引用符と二重引用符の違いは、この例には反映されていません。PHP では、場合によっては依然として一重引用符と二重引用符の間に違いがあります。

2. print は a.php で使用され、printf は b.php で使用されます。この 2 つは異なる概念です。

マニュアルには次のように書かれています:
print は実際には関数ではありません (言語構造体です)。そのため、パラメーター リストを括弧で囲む必要はありません
一方、printf は実際の関数であり、括弧で囲む必要があります。 2 番目の例では、 printf('CCC'); と書かれているとします

$a = 123;echo "$a";echo '$a';
ログイン後にコピー
は見れば分かります

多くの場合、コンピューター言語には「なぜ」がありません
このように設計されています、これを行う必要があります

上記の xu の例は非常に鋭いです

PHP では、二重引用符には文字列定数と変数の両方を含めることができると規定されています
実行すると、変数に保存された文字列が自動的に出力されます

ただし、次の場合は、シングルクォーテーションは、パッケージに変数が含まれているかどうかに関係なく、純粋な文字列を出力します
xu の例を参照するとよく理解できます

1.a.php、どちらのステートメントも正しいのに、なぜですか?

理由はありません。print と echo は関数ではなく言語構造です。

PHP 言語は一重引用符と二重引用符を区別しませんか?

一重引用符と二重引用符を区別してください。一重引用符は標準の文字列データですが、二重引用符は二重引用符で囲まれた変数の内容を解析できるため、php として使用できる特別なテンプレートです

2.b.php、この文発言は間違っています、なぜですか?
printf は標準の組み込み関数です。括弧がないと関数呼び出しになります。

なお、

$a = 123;echo "$a";echo "<br/>";echo '$a';echo "<br/>";echo "'$a'";echo "<br/>";echo '"$a"';
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

result
123
$a
'123'
"$a "

1. この例では、一重引用符と二重引用符の違いが反映されていません。PHP では、場合によっては依然として一重引用符と二重引用符の違いが存在します。
2. print は a.php で使用され、printf は b.php で使用されます。この 2 つは異なる概念です。
マニュアルには次のように書かれています:

print は実際には関数ではありません (言語構造体です)。そのため、パラメーター リストを括弧で囲む必要はありません

一方、printf は実際の関数であり、括弧で囲む必要があります。 2 番目の例では、 printf('CCC'); と書きます。これに関する公式マニュアルはありますか?
リンクを教えてください!

PHP 構文は、一重引用符と二重引用符に分けられます。インターネット上では、具体的な違いが数多くあります。いずれにせよ、それぞれに独自の長所と短所があります。
a.php で echo と print に一重引用符を使用してもエラーはありません。次のように考えることができます。echo と print は実際には関数ではなく、単なる演算子です。
b.php の printf は関数であり、そうする必要があります。その後に括弧が続きます。

1.a.php,两句语句都是对,为什么?
不为什么,就是这样设计的,print和echo是属于语言结构,不是函数

php语言,不区分单引号与双引号么?

区分单引号和双引号,单引号是标准的字符串数据,而双引号则是可以任务是php的特殊模板,因为可以解析双引号中的变量内容

2.b.php,这句语句是错,为什么?
printf是一个标准的内置函数,不带括号就是一个函数调用,当然不能执行


有这方面的官方手册(中文翻译)么?


1、在你的例子中没有体现单引号与双引号的区别,在php中,有些情况下单/双引号还是有区别的。
2、a.php中用了print,而b.php中是printf,两个是不同的概念。
手册说:
print 实际上不是一个函数(它是一个语言结构),因此你可以不必使用圆括号来括起它的参数列表
而printf 是一个真正的函数,需要用括号括起来 ,因此你第二个例子中如果写成: printf('CCC') ; 就对了

有这方面的官方手册么?
给个链接!
http://php.net/manual/zh/function.print.php



1、在你的例子中没有体现单引号与双引号的区别,在php中,有些情况下单/双引号还是有区别的。
2、a.php中用了print,而b.php中是printf,两个是不同的概念。
手册说:
print 实际上不是一个函数(它是一个语言结构),因此你可以不必使用圆括号来括起它的参数列表
而printf 是一个真正的函数,需要用括号括起来 ,因此你第二个例子中如果写成: printf('CCC') ; 就对了

有这方面的官方手册么?
给个链接!
http://php.net/manual/zh/function.print.php

php语言,“语言结构”是个怎样的概念?
它与C语言的结构相同么?

本帖最后由 xuzuning 于 2013-08-02 12:53:09 编辑

语言结构 是一个程序块(过程),函数型语言没有对等的成分
你或许可以看做是宏

简单的说,语言结构既可以用圆括号包含着使用,也可以不用圆括号使用。
而内建函数必须用圆括号包含着使用。

php中输出变量,或者直接输出字符串一般是使用echo函数:
比如

$a="<h1>Hello,world!</h1><br/>";echo $a;echo "$a";echo '$a';
ログイン後にコピー

运行结果是:

变量加双引号会将变量先取出值,然后输出;
变来那个加单引号会将变量的名称直接输出;
printf函数一般用来格式化字符串
<?php$str = "Hello";$number = 123;printf("%s world. Day number %u",$str,$number);?>
ログイン後にコピー

输出:
Hello world. Day number 123
关于printf函数的详细用法,你可以看看:
http://www.w3school.com.cn/php/func_string_printf.asp

另外

$a = 123;echo "$a";echo "<br/>";echo '$a';echo "<br/>";echo "'$a'";echo "<br/>";echo '"$a"';
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー


结果

123
$a
'123'
"$a"

echo "'$a'";

上面这类语句,包括多个单引号或双引号。
WEB服务器,解析这样的语句。
是先解析外部符号,还是先解析内部符号呢?
解析顺序怎样?


另外

$a = 123;echo "$a";echo "<br/>";echo '$a';echo "<br/>";echo "'$a'";echo "<br/>";echo '"$a"';
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー


结果

123
$a
'123'
"$a"

echo "'$a'";

上面这类语句,包括多个单引号或双引号。
WEB服务器,解析这样的语句。
是先解析外部符号,还是先解析内部符号呢?
解析顺序怎样?


其实这个例子正好说明了你的问题
正式因为先解析外部的,最后一个即使内部是双引号也依然按单引号解析为字符串而非变量....

额,这是我根据结果推论的...不知道准确不



另外

$a = 123;echo "$a";echo "<br/>";echo '$a';echo "<br/>";echo "'$a'";echo "<br/>";echo '"$a"';
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー


结果

123
$a
'123'
"$a" 

echo "'$a'";

上面这类语句,包括多个单引号或双引号。
WEB服务器,解析这样的语句。
是先解析外部符号,还是先解析内部符号呢?
解析顺序怎样?


其实这个例子正好说明了你的问题
正式因为先解析外部的,最后一个即使内部是双引号也依然按单引号解析为字符串而非变量....

额,这是我根据结果推论的...不知道准确不

php官方手册(中文翻译)有这说明么?

这个学习了  以前以为不分的呢

双引号里面会被转义,单引号不会被转义

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート