php 中 print 用 双引号 和单引号的问题

<?php
session_start();
require('templates/header.html');
print '你注册的email是:'.$_SESSION['email'].'';
?>

最后一句中print用双引号的话 里面的$_SESSION['email']也要用双引号 或者
最后一句中print用单引号的话 里面的$_SESSION['email']也要用单引号
为什么不能一个单引号 一个双引号 或者换过来呢?请教

感觉题主理解php执行的顺序不太对,不是里面外面,而应该是左边右边。(因为php引擎就是这么解析的, 引号-不论是单引号还是双引号, 应该从左至右成对出现。)
1、print '你注册的email是:' . $_SESSION['email'] . ''; (后面拼接 '' 不是必须的, 可以简化成: print '你注册的email是:' . $_SESSION['email'])
2、print “你注册的email是:" . $_SESSION['email'] (如果双引号中没有要解析的内容,这条语句和语句1效果是一样的)
你的困惑可能是对 php 引擎的解析的疑问,引擎解析(或者php代码被解析的顺序是从上往下,从左至右的,单双引号使用一般没有区别(下文特殊情况除外,单独说明))的,只要保证是成对出现的就行了(因为结尾的引号总是尝试与最近的引号配对,否则就是语法错误了。)
特殊情况:
双引号中的变量会被解析,比如 :
$a = 'hello, ';
echo "$a 中国";
输出: hello, 中国
而:
$a = 'hello, ';
echo '$a 中国'; // 注意,单引号中的变量或者其他php语句不会被解析
输出:
$a 中国。
延伸我的一个疑问, 下面语句输出什么呢 ? (我的php版本: 7.4.3 windows)
class ShopProduct
{
public $title = "default product";
public $producerMainName = "main name";
public $producerFistName = "first name";
public $price = 0;

public function getProducer()
{
return $this->producerFistName . " "
. $this->producerMainName;
}
}

$product1 = new ShopProduct();
$product1->title = "My Antonia";
$product1->producerMainName = "Cather";
$product1->producerFistName = "Willa";
$product1->price = 5.99;
print "author:{ $product1->getProducer() }\n";
你可能觉得会输出(实际执行不是):

author: Willa Cather
实际输出:
author:{ () }
你知道是什么原因吗 ?
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-03-21
单引号和双引号都是成对出现的,如果一个单一个双它是会报错的。
双引号里边可以写变量和字符串,而单引号里边只能是字符串。
print '你注册的email是:'.$_SESSION['email'];最后边的单引号就不需要了。
'你注册的email是:'这一块单引号已经成对结束了。
第2个回答  2012-03-21
这个其实是一个匹配的问题,你的代码的最后一句如果用加号来表示连接的话,可以这样解释:
print '你注册的email是:'+$_SESSION['email']+'';其实里边的"."是用来把三句话连接成了一句话而已,所以引号需要匹配正确。追问

'+$_SESSION['email']' + ' 是吗

上面写得太快了吧

追答

嗯,是的。

本回答被提问者采纳
第3个回答  2020-03-21
单引号,是表示一个变量关系。
双引号,是将选定范围,做为字符串执行。
特别是当一个语句里,存在特殊符号或多种变量时,需要用双引号进行区分开,以免被系统误认为特殊符号语法进行解析。
第4个回答  2012-03-21
单引号是原样输出,而双引号是解析输出

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网