|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
在学习HTML中我想边学边做是最有效的方式,当然这一方式对于学习PHP同样是最有效的。
天真的字符串。
由于$表达的天真性,我们能够用“映照”的办法,修改字符串大概函数。
<?php
$a=b;
$b=123;
echo$$a;//这能够输入123。不外对照好的习气是echo${$a},如许更分明了然。
$c=d;
echo$c();
functiond(){return321;}//$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
functiondemo(){returnabc;}
functionabc(){return123;}
$func=function(){returnfunction;};//必要php5.3以上版本
$abc=abc;
$abc1=abc--one::;
echo${demo().1};
echo${demo(}})}();
echo"{{${demo()}()}:::{$func()}}{$";
$test=Test;
echo":::<br/>{$test::func()}:::";
classTest
{
staticpublicfunctionfunc()
{
returnstaticfunc;
}
}
?>
固然php的双引号很壮大,但良多场所其实不太必要,要天生页面,良多时分能够如许写:
$form.=<inputtype="hidden"name=".$name."value=".form_prep($value,$name)."/>."
";
这个是CI框架中form_helper.php的form_hidden的一行代码。
要输入的单引号多时,用双引号括字符串。反之用单元引号。单引号和双引号比拟,用来括字符串效力其实不会高几,固然单引号只必要本义和,双引号的有SequenceMeaning
换行(LFor0x0A(10)inASCII)回车(CRor0x0D(13)inASCII) 程度偏向的tab(HTor0x09(9)inASCII)v竖直偏向的tab(VTor0x0B(11)inASCII)(sincePHP5.2.5)f换页(FFor0x0C(12)inASCII)(sincePHP5.2.5)反斜线$美金dollar标志"双引号[0-7]{1,3}切合该表达式按次的字符串是一个八进制的字符x[0-9A-Fa-f]{1,2}切合该表达式按次的字符串是一个十六进制的字符这么多要本义,但我想程序在遍历每个字符时,实践上它最后只必要判别"$,大概另有{。
那末双引号和单引号一样多时应当怎样输入呢?我们先看一下其余言语的办理计划。
Python能够用大概"""来闭合字符串,这当中其实不需本义"和,有必要的话,能够写成如许如许+""。
由于php是一个模版言语,以是想间接输入的话(最好写年夜援用的模版文件里),间接写html就能够了。
不间接输入的话,php用的是heredoc语法布局和nowdoc(语法布局自PHP5.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]))
{
//正轨的写法是援用模版文件。
?>
<textareaid="show-div"><?php
echo$_POST[textarea];
?></textarea>
<script>
vara=document.getElementById("show-div").value;
parent.show(document.getElementById("show-div").value);
</script>
<?php
}
?>
<!DOCTYPEhtml>
<htmllang="en">
<head>
<metacharset="utf-8">
<title>WelcometoCodeIgniter</title>
</head>
<body>
<iframename="iframe_show"width="0"height="0"scrolling="no"style="display:none">
</iframe>
<h1>js在文件前面!</h1>
<formname="mainform"target="iframe_show"method="post"enctype="multipart/form-data">
<textareaname="textarea"><script>alert(123)</script></textarea>
<inputtype="submit"name="cmd"value="提交"/>
<inputtype="reset"value="取消"/>
</form>
<divid="show">HelloWorld</div>
</body>
<styletype="text/CSS">
</style>
<script>
//<![CDATA[
functionshow(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)
{
echocount($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却能用false1.99如许的非整数键一般输入。编程是一种严格的事,我们不但愿呈现很多不测的了局;并且这类本义必定水平上影响效力。其余言语的这类数据布局,会有严格形式和宽松形式,好比lisp有这两种形式,python只要严格形式(如hash={1:1};print(hash[1]);#这个会报错――话说python固然说是剧本言语,可是最入手下手计划时,比其余剧本言语要严格的多,以是测试性比其余剧本言语好。假如你哪天想计划一个本人的言语,先要向严格偏向计划,今后留个ini让他人设置;写好了的程序,由严格向宽松转简单,宽松转到严格形式,良多时分完整地不成能或目测上不成能)。但php的数组,只要这类宽松形式,但愿php5.6能出点新器材。
Javascript也差未几,不外键都是字符串。写的代码假如键是正数,不会转成字符串。ture和flase会被转成true和flase.。
<script>
vararr={
a:47a,
b:12,
1:1,
/*-1:-1,*/
1.99:1.99,
-1:-1,
false:false,
0:0,
0:char0,
};
vari;
varstr=;
for(iinarr){
str+=typeof(i)+:+i+=>+arr[i]+
;
}
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代码会报错
voidmain(){
print("Hello,World!");
vara={1:1};
varb={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新项目,估量城市用这个功效。
本文链接http://www.cxybl.com/html/wlbc/Php/20130729/39380.html怎样学习,大家都知道编程是1门很枯燥的事业,所以大家一定要有兴趣,可能刚开始打算学的时候是因为别人说php有多好,php多么流行,但是后来伴随着学习的深入,你的这些 |
|