Home > Backend Development > PHP Tutorial > php语法分单引号,双引号么?

php语法分单引号,双引号么?

WBOY
Release: 2016-06-23 14:17:54
Original
1132 people have browsed it

本帖最后由 u011523116 于 2013-08-01 20:12:13 编辑

//a.php<?phpprint'AAA';       //用单引号,语法对!echo'BBB';       //用单引号,语法对!?>
Copy after login


<?php//b.phpprintf'CCC';     //用单引号,错误!?>
Copy after login


1.a.php,两句语句都是对,为什么?
php语言,不区分单引号与双引号么?

2.b.php,这句语句是错,为什么?


回复讨论(解决方案)

1.本来就是对的,字符串可以包在单引号对中也可以包在双引号对中

2.printf是函数 这一点是不同于print和echo的 所以要用printf('ccc');

1.本来就是对的,字符串可以包在单引号对中也可以包在双引号对中

2.printf是函数 这一点是不同于print和echo的 所以要用printf('ccc');

在C语法中,单引号与双引号,是两个完全不同的概念。绝不能混用!

在php语法,它们好像是一样?

php函数也很古怪啊。

有些部分可以省略,

如:括号( )。

我以前也遇到过此类的疑惑,尤其是也数据库的查询操作结合起来时,单引号和双引号区别更大。
我看到一份网上资料,链接为http://blog.csdn.net/wangjunhe/article/details/8191880,
收获不小,不妨你也看看。

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

$a = 123;echo "$a";echo '$a';
Copy after login
看看就知道了

在很多情况下,计算机语言是没有"为什么"的
就是这么设计的,你就得这么做

楼上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"';
Copy after login
Copy after login
Copy after login
Copy after login


结果

123
$a
'123'
"$a"

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

运行结果是:

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

输出:
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"';
Copy after login
Copy after login
Copy after login
Copy after login


结果

123
$a
'123'
"$a"

echo "'$a'";

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


另外

$a = 123;echo "$a";echo "<br/>";echo '$a';echo "<br/>";echo "'$a'";echo "<br/>";echo '"$a"';
Copy after login
Copy after login
Copy after login
Copy after login


结果

123
$a
'123'
"$a"

echo "'$a'";

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


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

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



另外

$a = 123;echo "$a";echo "<br/>";echo '$a';echo "<br/>";echo "'$a'";echo "<br/>";echo '"$a"';
Copy after login
Copy after login
Copy after login
Copy after login


结果

123
$a
'123'
"$a" 

echo "'$a'";

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


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

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

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

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

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

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template