宋体字符串php入门第六天
2013-04-29 13:52
316 查看
最近用使开发的过程中现出了一个小问题,顺便记录一下原因和方法--宋体字符串
活灵的符字串。
因为$抒发的活灵性,我们可以用“映射”的方法,调出符字串或者数函。
<?php
$a = 'b';
$b = '123';
echo $$a; // 这可以输出123。不过比拟好的惯习是echo ${$a},这样更清晰了明。
$c = 'd';
echo $c();
function d() {return '321';} // $c()调用的是d数函
?>
php的符字串和javascript和python似类,在单引号中用不把双引号写成\",在双引号中也用不转义单引号。但是,因为php中有风趣的$存在,所以双引号要杂复一些。看例子。
<?php
$aa = 'abc';
echo "'$aa'";
echo "\{$aa}"; // 这样写 PHP5.1.1前以后会示显不同的结果
echo "\\{{$aa}}"; // 这样写就没问题
?>
双引号中可以有变量,可以用"$a"或"{$a}"式形来现表,个人议建大家多用面前的写法,第一编辑器会高亮,第二能写更杂复的式子。要注意,虽然"'{$a}'"的结果和"'".$a."'"的结果一样,但是{并非'"的简写,echo "'{__FILE__}'"和echo "'".__FILE__."'"结果是不同的。因为双引号中的关闭区间是以 {$ xxxx } 种这结构(或${xxxx}结构,不过这个和双引号表面的结构不一样,我不太欢喜)。所以可以写{$this->func()},不能写{self::func()},或{常量}。
虽然php的双引号很壮大,但很多场所不并太须要, 要生成页面,很多时候可以这样写:
$form .= '<input type="hidden" name="'.$name.'" value="'.form_prep($value, $name).'" />'."\n";
这个是CI框架中form_helper.php的form_hidden的一行代码。
要输出的单引号多时,用双引号括符字串。反之用单位引号。单引号和双引号相比,用来括符字串效率不并会高多少,虽然单引号只须要转义\\和\',双引号的有
这么多要转义,但我想序程在历遍每个符字时,实际上它最初只须要判断 \ " $ ,可能还有 {。
那么双引号和单引号一样多时该应怎么输出呢?我们先看一下别的语言的解决方案。
Python 可以用 ''' 或者 """ 来闭合符字串,这中之不并需转义"和',有须要的话,可以写成这样 '''这样'''+"'''"。
因为php是一个模版语言,所以想直接输出的话(最好写大用引的模版文件里),直接写html就能够了。
不直接输出的话, php 用的是 heredoc语法结构和nowdoc(语法结构自PHP 5.3.0后以) 。
Heredoc是以 <<<xxxx 扫尾, 以 xxxx; 尾结;Nowdoc,是以 <<<'xxxx' 扫尾, 以 xxxx;尾结。注意xxxx;尾结要在回车后且和回车句语之间不能有别的符字。
每日一道理
聪明人学习,像搏击长空的雄鹰,仰视一望无际的大地;愚笨的人学习,漫无目的,犹如乱飞乱撞的无头飞蛾;刻苦的人学习,像弯弯的河流,虽有曲折,但终会流入大海;懒惰的人学习,像水中的木头,阻力越大倒退得越快。
Javascript没有生原的方法,但是依托html,还是可以解决问题。
上面写个iframe异步提交的例子。
作为组数的键的符字串:
php的组数的键只有两种类型,整数和符字串,'0'~'9'会被认是整数或转成整数。见下例。
上例的组数只有五行,多少可以预感,但上面的echo 却能用false 1.99这样的非整数键畸形输出。程编是一种严厉的事,我们不希望现出多许外意的结果;而且种这转义必定度程上影响效率。别的语言的种这数据结构,会有严厉式模和宽松式模,比如lisp有这两种式模,python只有严厉式模(如hash={'1': 1}; print(hash[1]);#这个会报错——话说python虽然说是脚本语言,但是最开始计设时,比别的脚本语言要严厉的多,所以试测性比别的脚本语言好。如果你哪天想计设一个自己的语言,先要向严厉向方计设,后以留个ini让别人配置;写好了的序程,由严厉向宽松转轻易,宽松到转严厉式模,很多时候完整地不可能或目测上不可能)。但php的组数,只有种这宽松式模,希望php5.6能出点新东西。
Javascript也差未几,不过键都是符字串。写的代码如果键是数负,不会转成符字串。ture和flase会被转成'true'和'flase'.。
Dart和Javascript差未几,也是只能用符字串作键,但是不并会转义。上面例子会报错。个人不并看好dart的景前,只是写东西时一时崛起,拿来测测看下。果然语言不同,便有各种微差异,想到自己很多时候php用多了,用js时便想当然为以也如此,便好笑了。上面的Dart代码会报错
void main() {
print("Hello, World!");
var a = {'1': 1};
var b = {1: 1}; // 报错原因
print(a['1']);
print(a[1]); // 报错原因
}
在有的配置下,php能这样写,$arr = array('key' => 'val'); echo $arr[key]; 但是种这写法,php会首先看key是否是常量(php自带的常量都有上千个),如果不是常量,就作符字串。所以种这写法效率很低下,比$arr['key']慢几倍(常量多的目项,还要更慢)。echo "$arr[key]"则和echo "{$arr['key']}的效率差未几,因为双引号中不须要斟酌常量。一般来说$arr[key]种这写法少打字又清晰,但多打两个' 会使你的序程环保一些,通用一些,也是不难做到的。
如果
php
的常量像变量一样,面前有个缀前,如
#,
横竖有
//
替代
#
。一般写
$arr[key]
就用不斟酌常量,效率高又便利序程员。写
$arr[#key]
的情况未几,有须要时写成
$arr['#key']
。或者学
erlang
的(我比拟不欢喜
erlang
那种从
prolog
那继承的语法
,
更惯习看
c
或
lisp
那种语法
)
,使“变量”只能用使大写和下划线定名,非纯大写和下划线用于“原子”的定名;
php
自带的常量都是大写的,我见过的
php
目项,常量都是用大写字母和下划线定名,可能有少极不是,而表单的
name
值在大部分目项中都是小写,这样少数组数就只用非纯大写和下划线就能够了。如果
5.6
能出这个能功,改个
ini
就实现的话,少数公司的
php
新目项,计估都会用这个能功。
文章结束给大家分享下程序员的一些笑话语录: Bphone之你们聊,我先走了!移动说:我在phone前加o,我叫o缝;苹果说:我在phone前i,我是i缝;微软说:我在phone前加w,我叫w缝;三星说:你们聊,我先走了!
将来王建宙写回忆录的时候,一定要有一句“常小兵为中国移动的发展做出了不可磨灭的贡献”。
活灵的符字串。
因为$抒发的活灵性,我们可以用“映射”的方法,调出符字串或者数函。
<?php
$a = 'b';
$b = '123';
echo $$a; // 这可以输出123。不过比拟好的惯习是echo ${$a},这样更清晰了明。
$c = 'd';
echo $c();
function d() {return '321';} // $c()调用的是d数函
?>
php的符字串和javascript和python似类,在单引号中用不把双引号写成\",在双引号中也用不转义单引号。但是,因为php中有风趣的$存在,所以双引号要杂复一些。看例子。
<?php
$aa = 'abc';
echo "'$aa'";
echo "\{$aa}"; // 这样写 PHP5.1.1前以后会示显不同的结果
echo "\\{{$aa}}"; // 这样写就没问题
?>
双引号中可以有变量,可以用"$a"或"{$a}"式形来现表,个人议建大家多用面前的写法,第一编辑器会高亮,第二能写更杂复的式子。要注意,虽然"'{$a}'"的结果和"'".$a."'"的结果一样,但是{并非'"的简写,echo "'{__FILE__}'"和echo "'".__FILE__."'"结果是不同的。因为双引号中的关闭区间是以 {$ xxxx } 种这结构(或${xxxx}结构,不过这个和双引号表面的结构不一样,我不太欢喜)。所以可以写{$this->func()},不能写{self::func()},或{常量}。
<?php function demo() {return 'abc';} function abc() {return '123';} $func = function() {return 'function';}; // 须要php5.3以上版本 $abc = 'abc'; $abc1 = 'abc--one::'; echo ${demo().'1'}; echo ${demo('}}')}(); echo "\{{${demo()}()}:::{$func()}\}{\$"; $test = 'Test'; echo ":::<br/>{$test::func()}:::"; class Test { static public function func() { return 'static func'; } } ?>
虽然php的双引号很壮大,但很多场所不并太须要, 要生成页面,很多时候可以这样写:
$form .= '<input type="hidden" name="'.$name.'" value="'.form_prep($value, $name).'" />'."\n";
这个是CI框架中form_helper.php的form_hidden的一行代码。
要输出的单引号多时,用双引号括符字串。反之用单位引号。单引号和双引号相比,用来括符字串效率不并会高多少,虽然单引号只须要转义\\和\',双引号的有
Sequence | Meaning |
\n | 换行 (LF or 0x0A (10) in ASCII) |
\r | 回车 (CR or 0x0D (13) in ASCII) |
\t | 水平向方的 tab(HT or 0x09 (9) in ASCII) |
\v | 竖直向方的 tab (VT or 0x0B (11) in ASCII) (since PHP 5.2.5) |
\f | 页换 (FF or 0x0C (12) in ASCII) (since PHP 5.2.5) |
\\ | 反斜线 |
\$ | 美金dollar记标 |
\" | 双引号 |
\[0-7]{1,3} | 符合该抒发式序顺的符字串是一个八进制的符字 |
\x[0-9A-Fa-f]{1,2} | 符合该抒发式序顺的符字串是一个十六进制的符字 |
那么双引号和单引号一样多时该应怎么输出呢?我们先看一下别的语言的解决方案。
Python 可以用 ''' 或者 """ 来闭合符字串,这中之不并需转义"和',有须要的话,可以写成这样 '''这样'''+"'''"。
因为php是一个模版语言,所以想直接输出的话(最好写大用引的模版文件里),直接写html就能够了。
不直接输出的话, php 用的是 heredoc语法结构和nowdoc(语法结构自PHP 5.3.0后以) 。
Heredoc是以 <<<xxxx 扫尾, 以 xxxx; 尾结;Nowdoc,是以 <<<'xxxx' 扫尾, 以 xxxx;尾结。注意xxxx;尾结要在回车后且和回车句语之间不能有别的符字。
每日一道理
聪明人学习,像搏击长空的雄鹰,仰视一望无际的大地;愚笨的人学习,漫无目的,犹如乱飞乱撞的无头飞蛾;刻苦的人学习,像弯弯的河流,虽有曲折,但终会流入大海;懒惰的人学习,像水中的木头,阻力越大倒退得越快。
<?php $a = 'abc'; $b = 'html'; $c = <<<html '{$b}' html; $d = "'{$b}' "; if ($c === $d) { echo <<<abc \$c === \$d:::'{$a}' {$c} abc<br/> abc; echo <<<'test' \$c === \$d:::'{$a}' {$c} 'test' test<br/> test; } ?>
Javascript没有生原的方法,但是依托html,还是可以解决问题。
上面写个iframe异步提交的例子。
<?php /* iframe_test.php */ if (isset($_POST['cmd'])) { // 正规的写法是用引模版文件。 ?> <textarea id="show-div"><?php echo $_POST['textarea']; ?></textarea> <script> var a = document.getElementById("show-div").value; parent.show(document.getElementById("show-div").value); </script> <?php } ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Welcome to CodeIgniter</title> </head> <body> <iframe name="iframe_show" width="0" height="0" scrolling="no" style="display:none"> </iframe> <h1>js在文件面前!</h1> <form name="mainform" target="iframe_show" method="post" enctype="multipart/form-data"> <textarea name="textarea"><script>alert(123)</script></textarea> <input type="submit" name="cmd" value="提交" /> <input type="reset" value="撤消" /> </form> <div id="show">Hello World</div> </body> <style type="text/css"> </style> <script> //<![CDATA[ function show(str) { alert(str); document.getElementById("show").innerHTML = str; } //]]> </script> </html><?php /* iframe_test.php */
作为组数的键的符字串:
php的组数的键只有两种类型,整数和符字串,'0'~'9'会被认是整数或转成整数。见下例。
<?php $arr_type = array( 0x34 => '0x34', 1 => '1', '1' => "'1'", 1.99 => '1.99', true => 'true', 0 => '0', false => 'false', '0' => "'0'", 0.0 => '0.0', 0.01 => '0.01', .99 => '0.99', -1 => '-1', '1.99' => "''1.99' '", ); var_dump($arr_type, json_encode($arr_type), json_encode($arr_type)); if (1 !== true) { echo count($arr_type),'<br/>'; echo $arr_type[1.99],'<br/>'; echo $arr_type[false],'<br/>'; echo $arr_type['1.99'],'<br/>'; echo $arr_type[-1],'<br/>'; echo $arr_type[0x34],'<br/>'; } ?>
上例的组数只有五行,多少可以预感,但上面的echo 却能用false 1.99这样的非整数键畸形输出。程编是一种严厉的事,我们不希望现出多许外意的结果;而且种这转义必定度程上影响效率。别的语言的种这数据结构,会有严厉式模和宽松式模,比如lisp有这两种式模,python只有严厉式模(如hash={'1': 1}; print(hash[1]);#这个会报错——话说python虽然说是脚本语言,但是最开始计设时,比别的脚本语言要严厉的多,所以试测性比别的脚本语言好。如果你哪天想计设一个自己的语言,先要向严厉向方计设,后以留个ini让别人配置;写好了的序程,由严厉向宽松转轻易,宽松到转严厉式模,很多时候完整地不可能或目测上不可能)。但php的组数,只有种这宽松式模,希望php5.6能出点新东西。
Javascript也差未几,不过键都是符字串。写的代码如果键是数负,不会转成符字串。ture和flase会被转成'true'和'flase'.。
<script> var arr = { a: '47a', 'b': 12, 1: '1', /* -1: '-1', */ 1.99: '1.99', '-1': '-1', false: 'false', 0: '0', '0': 'char0', }; var i; var str = ''; for (i in arr) { str += typeof(i)+': '+i+' => '+arr[i]+'\n'; } if (1 !== true) { alert([ arr['1'], arr[1.99], arr[-1], arr['a'], arr[false], arr[0], arr['0'], str, ]); } </script>
Dart和Javascript差未几,也是只能用符字串作键,但是不并会转义。上面例子会报错。个人不并看好dart的景前,只是写东西时一时崛起,拿来测测看下。果然语言不同,便有各种微差异,想到自己很多时候php用多了,用js时便想当然为以也如此,便好笑了。上面的Dart代码会报错
void main() {
print("Hello, World!");
var a = {'1': 1};
var b = {1: 1}; // 报错原因
print(a['1']);
print(a[1]); // 报错原因
}
在有的配置下,php能这样写,$arr = array('key' => 'val'); echo $arr[key]; 但是种这写法,php会首先看key是否是常量(php自带的常量都有上千个),如果不是常量,就作符字串。所以种这写法效率很低下,比$arr['key']慢几倍(常量多的目项,还要更慢)。echo "$arr[key]"则和echo "{$arr['key']}的效率差未几,因为双引号中不须要斟酌常量。一般来说$arr[key]种这写法少打字又清晰,但多打两个' 会使你的序程环保一些,通用一些,也是不难做到的。
如果
php
的常量像变量一样,面前有个缀前,如
#,
横竖有
//
替代
#
。一般写
$arr[key]
就用不斟酌常量,效率高又便利序程员。写
$arr[#key]
的情况未几,有须要时写成
$arr['#key']
。或者学
erlang
的(我比拟不欢喜
erlang
那种从
prolog
那继承的语法
,
更惯习看
c
或
lisp
那种语法
)
,使“变量”只能用使大写和下划线定名,非纯大写和下划线用于“原子”的定名;
php
自带的常量都是大写的,我见过的
php
目项,常量都是用大写字母和下划线定名,可能有少极不是,而表单的
name
值在大部分目项中都是小写,这样少数组数就只用非纯大写和下划线就能够了。如果
5.6
能出这个能功,改个
ini
就实现的话,少数公司的
php
新目项,计估都会用这个能功。
文章结束给大家分享下程序员的一些笑话语录: Bphone之你们聊,我先走了!移动说:我在phone前加o,我叫o缝;苹果说:我在phone前i,我是i缝;微软说:我在phone前加w,我叫w缝;三星说:你们聊,我先走了!
将来王建宙写回忆录的时候,一定要有一句“常小兵为中国移动的发展做出了不可磨灭的贡献”。
相关文章推荐
- php七天入门教程第六天
- php入门第六天
- PHP入门-变量声明与使用
- PHP入门之常量简介和系统常量
- php入门笔记
- php入门十一之异常处理
- Ajax+PHP简单入门教程
- PHP面向对象编程快速入门
- php smart入门三
- Magento入门基础 - - 更改URL,去掉index.php
- PHP on Windows Azure 入门教学系列(3) ——在Windows Azure中部署Wordpress
- [php入门] 1、从安装开发环境环境到(庄B)做个炫酷的登陆应用
- PHP+Memcache使用入门中文版
- 入门: 如何在xampp中运行php文件 (WINDOWS)(转)
- PHP快速入门教程:for循环
- RabbitMQ官方中文入门教程(PHP版) 第三部分:发布/订阅(Publish/Subscribe)
- php入门学习书籍
- 7天入门php-类与对象
- PHP入门1.3
- php入门教程之Zend Studio设置与开发实例